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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章