经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
Java实现文件上传的方法总结
来源:jb51  时间:2023/4/12 11:14:28  对本文有异议

1.文件上传接收文件接口

Controller成通过post上传方式定义接口,上传文件通常使用post的上传方式,get用于获取数据、文件。 单个入参可以使用@RequestParam标注,不用封装到类里边在使用@RepuestBody映射

  1. @PostMapping(value = "/uploadFile")
  2. @ApiOperation(value = "文件上传", notes = "文件上传")
  3. public Result uploadFile(@RequestParam (name = "file") MultipartFile file) throws Exception {
  4. String url = fileService.uploadFile(file);
  5. }

2.接口主要内容部分

2.1获取文件的相关信息

获取文件主要信息的目的是为了保存文件,通常会使用文件信息来作为文件的保存名称,以下是常用的文件信息获取

  1. //获取文件名称
  2. String originalFilename = file.getOriginalFilename();
  3. // 截取上传文件的后缀
  4. String uploadFileSuffix = originalFilename.substring(originalFilename.indexOf('.') + 1, originalFilename.length());
  5. //获取文件父目录
  6. File Parentlocaltion=localFile.getParentFile();
  7. //获取文件绝对目录
  8. File localFileAbsoluteFile=localFile.getAbsoluteFile();

需要获取项目所在位置,并且把文件保存到项目同一个目录下。可以用以下方式获取

  1. String currentDir = System.getProperty("user.dir");

File(String pathname):使用给定的路径名字符串创建一个文件对象。

File(String parent, String child):使用给定的父目录路径名字符串和子目录名字符串创建一个文件对象。

createNewFile():创建一个新文件。

mkdir():创建一个新目录。

mkdirs():创建一个新目录,如果必要的话,还会递归地创建父目录。

delete():删除文件或目录。

2.2首先需要知道 JAVA根据file的路径创建文件夹

下面的代码将创建一个文件夹,如果文件夹不存在。

  • mkdirs() 方法将递归地创建所有必需的父文件夹。
  • 如果您只需要创建直接的父文件夹,可以使用 mkdir() 方法。
  1. String folderPath = "D:\\uploadFiles\\report\\20230213\\";
  2. File folder = new File(folderPath);
  3. if (!folder.exists()) {
  4. folder.mkdirs();
  5. }

2.3文件保存到本地:方法一

使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错,所以一般会使用mkdirs,判断文件是否存在后创建文件夹

  1. public String uploadFile(MultipartFile file) throws Exception {
  2. File file = new File(fileName);
  3. try {
  4. //使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错
  5. String fileUrl = "D:\\uploadFiles\\report\\" + fileAdd + File.separator + System.currentTimeMillis() + "." + uploadFileSuffix;
  6. File localFile = new File(fileUrl);
  7. File Parentlocaltion=localFile.getParentFile();
  8.  
  9. if (!Parentlocaltion.exists()) { //判断文件父目录是否存在
  10. Parentlocaltion.mkdirs();
  11. }
  12. //FileUtils.copyInputStreamToFile(file.getInputStream(), localFile);
  13. file.transferTo(localFile);
  14. } catch (IOException e) {
  15. e.printStackTrace();
  16. return dealResultMap(false, "上传失败");
  17. }*/
  18. return dealResultMap(true, "上传成功");
  19. }

注意:两个文件对象,分别表示源文件和目标文件。然后,我们创建了两个文件通道,并使用 transferTo 方法将源文件通道中的数据传输到目标文件通道中。

2.4文件保存到本地:方法二

这个方式就是很普通的流写入方式,通过文件流读取文件后,写入本地磁盘

  1. public String uploadFile(MultipartFile file) throws Exception {
  2. String fileName = file.getOriginalFilename();
  3. try {
  4. //获取文件字节数组
  5. byte [] bytes = file.getBytes();
  6. //文件存储路径(/fileupload1/ 这样会在根目录下创建问价夹)
  7. File pfile = new File("/fileupload1/");
  8. //判断文件夹是否存在
  9. if(!pfile.exists()){
  10. //不存在时,创建文件夹
  11. pfile.mkdirs();
  12. }
  13. //创建文件
  14. File file = new File(pfile, fileName);
  15. //写入指定文件夹
  16. OutputStream out = new FileOutputStream(file);
  17. out.write(bytes);
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. return dealResultMap(false, "上传失败");
  21. }
  22. return dealResultMap(true, "上传成功");
  23. }

3.postman接口调用

这种调用方式仅限于只有file一个上传文件,入参只是file。项目中如果需要多次上传文件可以进行多次接口调用。

到此这篇关于Java实现文件上传的方法总结的文章就介绍到这了,更多相关Java文件上传内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号