1.文件上传接收文件接口
通过post接口,上传文件
@PostMapping(value = "/uploadFile")@ApiOperation(value = "文件上传", notes = "文件上传")public Result uploadFile(@RequestParam (name = "file") MultipartFile file) throws Exception {String url = fileService.uploadFile(file);}
2.接口主要内容部分
2.1获取文件的相关信息
//获取文件名称
String originalFilename = file.getOriginalFilename();
// 截取上传文件的后缀String uploadFileSuffix = originalFilename.substring(originalFilename.indexOf('.') + 1, originalFilename.length());//获取文件父目录File Parentlocaltion=localFile.getParentFile();
//获取文件绝对目录File localFileAbsoluteFile=localFile.getAbsoluteFile();
File(String pathname):使用给定的路径名字符串创建一个文件对象。
File(String parent, String child):使用给定的父目录路径名字符串和子目录名字符串创建一个文件对象。
createNewFile():创建一个新文件。
mkdir():创建一个新目录。
mkdirs():创建一个新目录,如果必要的话,还会递归地创建父目录。
delete():删除文件或目录。
2.2首先需要知道。JAVA根据file的路径创建文件夹
下面的代码将创建一个文件夹,如果文件夹不存在。
- mkdirs() 方法将递归地创建所有必需的父文件夹。
- 如果您只需要创建直接的父文件夹,可以使用 mkdir() 方法。
String folderPath = "D:\\uploadFiles\\report\\20230213\\";
File folder = new File(folderPath);
if (!folder.exists()) {folder.mkdirs();
}
2.3文件保存到本地:方法一
使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错
public String uploadFile(MultipartFile file) throws Exception {File file = new File(fileName);try {//使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错String fileUrl = "D:\\uploadFiles\\report\\" + fileAdd + File.separator + System.currentTimeMillis() + "." + uploadFileSuffix;File localFile = new File(fileUrl);File Parentlocaltion=localFile.getParentFile();if (!Parentlocaltion.exists()) { //判断文件父目录是否存在Parentlocaltion.mkdirs();}//FileUtils.copyInputStreamToFile(file.getInputStream(), localFile);file.transferTo(localFile);} catch (IOException e) {e.printStackTrace();return dealResultMap(false, "上传失败");}*/return dealResultMap(true, "上传成功");}
注意:两个文件对象,分别表示源文件和目标文件。然后,我们创建了两个文件通道,并使用 transferTo 方法将源文件通道中的数据传输到目标文件通道中。
2.4文件保存到本地:方法二
public String uploadFile(MultipartFile file) throws Exception {String fileName = file.getOriginalFilename();try {//获取文件字节数组byte [] bytes = file.getBytes();//文件存储路径(/fileupload1/ 这样会在根目录下创建问价夹)File pfile = new File("/fileupload1/");//判断文件夹是否存在if(!pfile.exists()){//不存在时,创建文件夹pfile.mkdirs();}//创建文件File file = new File(pfile, fileName);//写入指定文件夹OutputStream out = new FileOutputStream(file);out.write(bytes);} catch (IOException e) {e.printStackTrace();return dealResultMap(false, "上传失败");}return dealResultMap(true, "上传成功");
}
3.postman接口调用
这种调用方式仅限于只有file一个上传文件,入参只是file