MultipartFile实现文件上传和下载(Springboot)

简介: MultipartFile实现文件上传和下载(Springboot)

 MultipartFile是SpringMVC提供简化上传操作的工具类。在不使用框架之前,都是使用原生的HttpServletRequest来接收上传的数据,文件是以二进制流传递到后端的,然后需要我们自己转换为File类。使用了MultipartFile工具类之后,我们对文件上传的操作就简便许多了。


MultipartFile方法详解


String getName() 返回参数的名称

String getOriginalFilename();  获取源文件名称

String getContentType() 返回文件的内容类型

isEmpty() 判断是否为空,或者上传的文件是否有内容

Long getSize() 返回文件大小 以字节为单位

byte[] getBytes() 将文件内容转化成一个byte[] 返回

InputStream getInputStream() throws IOException;返回InputStream读取文件的内容


transferTo(File dest) 用来把 MultipartFile 转换换成 File


       文件上传代码java后端代码如下,首先取出MulipartFile的源文件名,拼接字符串构成File文件的磁盘路径,然后通过multipartFile的transferTo方法转化成File文件,后将该文件的文件名,文件大小,磁盘存储路径存放到数据库中。至此文件上传基本完成。

 @RequestMapping("/test2/imp")
    @ResponseBody
    public String file(@RequestParam("file") MultipartFile multipartFile) throws Exception {
        File file=new File("D:\\test\\"+multipartFile.getOriginalFilename());
        if(multipartFile.isEmpty()){
            throw new Exception("文件不能为空");
        }
        String filename = multipartFile.getOriginalFilename();
        long size = multipartFile.getSize();
        multipartFile.transferTo(file);
        String absolutePath = file.getAbsolutePath();
        Myfile myfile=new Myfile();
        myfile.setName(filename);
        myfile.setPath(absolutePath);
        myfile.setSize(size);
        QueryWrapper<Myfile> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("name",filename);
        Myfile myfile1 = myfileMapper.selectOne(queryWrapper);
        if(myfile1==null)
            myfileMapper.insert(myfile);
        return "success";
    }

 文件下载java后端代码如下,首先根据文件名从数据库中取到文件的磁盘存储路径,然后取到该File文件,设置请求头内容将通过response.getOutputputStream方法将该二进制文件输出到浏览器上,通过浏览器下载。前端代码相对简单省略,可以参考elementplus组件upload实现前端设计。

@RequestMapping("test2/fileload")
    public String fileload(@RequestParam("filename")String filename, HttpServletResponse response) throws IOException {
        QueryWrapper<Myfile> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("name",filename);
        Myfile myfile = myfileMapper.selectOne(queryWrapper);
        File file=new File(myfile.getPath());
        response.setHeader("Content-Disposition", "attachment; filename=" + filename);
        response.setContentType("application/octet-stream");
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write(FileUtil.readBytes(file));
        outputStream.close();
        return "success";
    }
相关文章
|
21天前
|
存储 前端开发 Java
SpringBoot使用云端资源url下载文件的接口写法
在Spring Boot中实现从云端资源URL下载文件的功能可通过定义REST接口完成。示例代码展示了一个`FileDownloadController`,它包含使用`@GetMapping`注解的方法`downloadFile`,此方法接收URL参数,利用`RestTemplate`下载文件,并将文件字节数组封装为`ByteArrayResource`返回给客户端。此外,通过设置HTTP响应头,确保文件以附件形式下载。这种方法适用于从AWS S3或Google Cloud Storage等云服务下载文件。
123 7
|
6天前
|
Java
Java SpringBoot FTP 上传下载文件
Java SpringBoot FTP 上传下载文件
10 0
|
6天前
|
JavaScript Java
SpringBoot 下载文件
SpringBoot 下载文件
13 0
|
6天前
|
JavaScript Java Spring
SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名
SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名
19 0
|
21天前
|
前端开发 Java 网络架构
SpringBoot使用接口下载图片的写法
在Spring Boot中实现图片下载功能涉及定义一个REST接口来发送图片文件。首先,创建`ImageController`类,并在其中定义`downloadImage`方法,该方法使用`@GetMapping`注解来处理HTTP GET请求。方法内部,通过`Files.readAllBytes`读取图片文件到字节数组,再将该数组封装成`ByteArrayResource`。接着,设置`HttpHeaders`以指定文件名为`image.jpg`并配置为附件下载。
|
1月前
|
Java
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
|
1月前
|
存储 Java
软件开发常用之SpringBoot文件上传接口编写(中),一本书,代码大全(里面有很多代码重构的方法),屎山代码的原因是不断追加逻辑,在错误代码上堆积新的功能,在写完逻辑之后去思考一下,逻辑合理不
软件开发常用之SpringBoot文件上传接口编写(中),一本书,代码大全(里面有很多代码重构的方法),屎山代码的原因是不断追加逻辑,在错误代码上堆积新的功能,在写完逻辑之后去思考一下,逻辑合理不
|
1月前
|
Java 文件存储
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
|
2月前
|
缓存 Java Spring
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
28 0
|
2月前
|
NoSQL Java 关系型数据库
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
49 0