java 服务器文件上传和下载以及删除

我是使用的比较简单的上传方法

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();
}

 

 

 

 

你可能感兴趣的:(java)