Spring Boot实现文件上传

    xiaoxiao2021-09-06  120

    Spring Boot官方文档中写到:Spring Boot包含Servlet 3中的javax.servlet.http.Part API来支持上传文件。当想要接收多部分编码的文件数据时,可以使用MultipartFile类型的参数方法,并添加@RequestParam注释。(参考Spring Boot官方文档)

    文件上传前台表单:

    <!DOCTYPE html> <head> <title>Hello World!</title> </head> <body> <form action="/file" method="post" enctype="multipart/form-data"> <p> 文件:<input type="file" name="file" /> </p> <p> <input type="submit" value="上传文件" /> </p> </form> </body> </html>

    其中的enctype="multipart/form-data"很关键,后台Controller接收文件

    @Controller public class FileUpController { @Autowired private FileUpload fileUpload; @RequestMapping("/file") @ResponseBody public String fileUpload(@RequestParam("file") MultipartFile file) { return fileUpload.fileUpload(file); } }FileUpload.java接口:

    @Component public interface FileUpload { /** * 多个文件上传 * @param file * @return 返回完整的文件存储路径 */ public String fileUpload(MultipartFile file); }接口实现类:

    @Component public class FileUploadImpl implements FileUpload{ /** * 文件在服务端存储的目录 */ private String fileFullTempPath; @Override public String fileUpload(MultipartFile file){ fileFullTempPath = System.getProperty("user.dir")+"\\"+"temp"+"\\"+file.getOriginalFilename(); File newFile = new File(fileFullTempPath); if (!file.isEmpty()) { try { BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(newFile)); out.write(file.getBytes()); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); return "上传失败!" + e.getMessage(); } return fileFullTempPath; } else { return "文件为空,无法上传!"; } } }这里我是将文件默认上传到了项目根目录的temp文件夹下,使用接口主要是为了更好拓展功能,如果只是做一个上传的功能测试,没必要写接口,直接new一个实现对象即可。

    转载请注明原文地址: https://ju.6miu.com/read-677470.html

    最新回复(0)