高档网站建设,安全员证查询网上查询,洛阳尚贤网络科技有限公司,中山网页设计公司上传文件
原理#xff1a;前端让用户选择一个文件#xff0c;点击丢给后端上传#xff0c;后端servlet接收到这些请求就进行应答构建连接#xff0c;完了就开始接收。 但实现这些原理可以不是很懂。servlet封装了一下#xff0c;spring boot也封装了一下。实现就比较简单…上传文件
原理前端让用户选择一个文件点击丢给后端上传后端servlet接收到这些请求就进行应答构建连接完了就开始接收。 但实现这些原理可以不是很懂。servlet封装了一下spring boot也封装了一下。实现就比较简单。
实现过程
确定下载的目标路径转存就好了 /*** 输入这个类就是spring boot基于servlet进行封装直接 写这个参数就可以接收* 但是这个参数名称file要与前端传入一致否则应该要写别的注解* param file* return*/PostMapping(/upload)public RString upload(MultipartFile file){log.info(file.toString());// 看一下输入的basePath是否建了目录// 否则不会自己建目录会报错File dir new File(basePath);if (!dir.exists()){dir.mkdir();}String originPathName file.getOriginalFilename();// 由于如果按照源文件名字保存可能会重名所以使用UUID进行编码然后保存// 拼接一下拓展名就好了String suffix originPathName.substring(originPathName.lastIndexOf(.));String prefix UUID.randomUUID().toString();String fileName prefix suffix;try {// 最后调用transfer就可以转存了file.transferTo(new File(basePath fileName));} catch (IOException e) {e.printStackTrace();}return R.success(fileName);}下载文件
下载文件稍稍会复杂一些些但其实也还好就是用文件IO流就好了。 保存好的文件是保存在了服务端刚刚设置的文件夹下拿着时候相对于服务端程序就是需要input一下将upload的文件读入程序然后再去找一个output输出就好了。
实现过程
开启文件IO流将保存的文件读入程序。从HTTP Response里面获得输出流往里面写就好了。
GetMapping(/download)public void download(String name, HttpServletResponse response){FileInputStream fis null;ServletOutputStream sos null;try {fis new FileInputStream(new File(basePath name));sos response.getOutputStream();int len 0;byte[] bytes new byte[1024];while ((len fis.read(bytes) ) ! -1){sos.write(bytes);}sos.flush();} catch (Exception e) {// e.printStackTrace();} finally {try {fis.close();sos.close();} catch (Exception e) {// e.printStackTrace();}}}