我是使用的比较简单的上传方法
file.transferTo(new File(savePath));直接将文件转存到想要的路径
String uploadPath = "D:/datacleanTaskData/";//windows
//String uploadPath = "/webapp/datacleanTaskData/";//linux
String key = new Date().getTime()+"importDataExcel";
try {
//先把文件保存起来,待调用,先放在服务器
File filepath = new File(uploadPath);
String originalFilename = file.getOriginalFilename();
//此处给文件取了别名,你要是没需求,可以忽略
String fileName = key+originalFilename.substring(originalFilename.indexOf("."),originalFilename.length());
if (!filepath.exists())
filepath.mkdirs();
// 文件保存路径
String savePath = uploadPath + fileName;
logger.info("-------savePath--------"+savePath);
// 转存文件
file.transferTo(new File(savePath));
logger.info("-------转存文件--------wancheng");
} catch (Exception e) {
e.getStackTrace();
}
}
然后是取 文件:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import org.apache.commons.fileupload.FileItem;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
//上面是jar我也不确定是不是完全的,但是特殊的都有,其实也没啥特殊的,哈哈
String savePath = (String) param.get("savePath");
String originalFilename = (String) param.get("originalFilename");
//下面这行代码,只要路径正确就可以获取到File文件,y因为我想调用之前的方法,所以再转MultipartFile
File pdfFile = new File(savePath);
//下面是转MultipartFile 的过程,如果你想转成文件流也可以直接输出到前台进行下载
FileItem fileItem = new DiskFileItem("file",Files.probeContentType(pdfFile.toPath()),
false, originalFilename , (int) pdfFile.length(), pdfFile.getParentFile());
InputStream input = new FileInputStream(pdfFile);
OutputStream os = fileItem.getOutputStream();
IOUtils.copy(input, os);
MultipartFile file = new CommonsMultipartFile(fileItem);
//删除的方法就比较简单了
根据路径取到文件,然后执行删除,但是当文件在使用或者文件夹在使用,是无法删除成功的,我试了windows当你打开文件夹时删除失败,但是不会报错的,linux可以删除成功,然后如果你需要清理服务器的缓存文件的话,可以使用这个办法,取到文件夹,遍历删除,我没写这方面,就不展示了
File delFile = new File((String) param.get("savePath"));
if(delFile.isFile() && delFile.exists()) {
delFile.delete();
}
转载:https://blog.csdn.net/qq_40562912/article/details/101374403
查看评论