Spring MVC 文件上传与下载2

Service 方法
public List<Map<String,Object>> handleMultipartRequest(String fileGuid, MultipartRequest request, HttpServletRequest httpServletRequest) throws Exception {
List<Map<String, Object>> uploadFileList=new ArrayList<Map<String,Object>>();
Set<Entry<String, List<MultipartFile>>> params = request.getMultiFileMap().entrySet();
if(StringUtils.isEmpty(fileGuid)) {
fileGuid=guidGeneratorUtil.getUUID();
}
for(Entry<String, List<MultipartFile>> param : params) {
for(MultipartFile file: param.getValue()) {
if(StringUtils.isEmpty(file.getOriginalFilename())) {
logger.info("key=uploadfile File OriginalFilename is Empty.");
continue;
}
Map<String, Object> fileMap= handleMultipartFile(file);
fileMap.put("FileGuid", fileGuid);
fileUploadDataDao.insertFileUploadData(fileMap);
uploadFileList.add(fileMap);
}
}
return uploadFileList;
}

public Map<String, Object> handleMultipartFile(MultipartFile file) throws Exception{
    Map<String, Object> rMap=new HashMap<>();
    String msg = null;
    String extensionName=getExtensionName(file.getOriginalFilename());
    if(!checkFileExtensionName(extensionName)) {
         msg = String.format("key=uploadfile FileExtensionName:%s 文件后缀错误", extensionName);
        //logger.error(msg);
        throw new Exception(msg);
    }
    String fileId=guidGeneratorUtil.getFileId();
    rMap.put("FileId", fileId);
    StringBuilder fileSB=new StringBuilder();
    DateFormat dFormat=new SimpleDateFormat("yyyyMMdd");
    Date date =new Date();
    fileSB.append(uploadPath+dFormat.format(date));
    File destParnetFile=new File(fileSB.toString());
    if(!destParnetFile.exists()) {
        destParnetFile.mkdirs();  //如果目录不存在,则创建
    }
    File dest=new File(fileSB.toString(), fileId);
    try {
        file.transferTo(dest);  //保存文件到本地磁盘
    } catch (IllegalStateException | IOException e) {
        msg=String.format("key=uploadfile %s", e.getMessage());
        //logger.error(msg);
        throw new Exception(msg); 
    }
    rMap.put("FilePath", fileSB.toString());
    rMap.put("FileName", file.getOriginalFilename());
    rMap.put("FileType", extensionName);
    rMap.put("FileSize", file.getSize());
    return rMap;

}

/**
 * @param fileName
 * @return
 */
public String getExtensionName(String fileName) {
    String extensionName="";
    if(StringUtils.isEmpty(fileName)) {
        return extensionName;
    }
    int startIndex=fileName.indexOf(".");
    extensionName=fileName.substring(startIndex+1);
    return extensionName;
}

/**
 * @param extensionName 文件扩展名称
 * @return  返回true可以上传,返回false不可以上传
 */
private Boolean checkFileExtensionName(String extensionName) {
    boolean flag=false;  
    if(StringUtils.isEmpty(extensionName)) {
        return flag;
    }
    String[] appExtArr=StringUtils.tokenizeToStringArray(appExtStr, ",");
    for (String m : appExtArr) {
        if(extensionName.equals(m)) {
            flag=true;
            break;
        }
    }

    return flag;
}

public List<Map<String, Object>>  getFileUploadDataList(Map<String, Object> map){
    List<Map<String, Object>> rList = new ArrayList<>();
    rList=fileUploadDataDao.getFileUploadDataList(map);
    return rList;
}

public int  getFileUploadDataListCnt(Map<String, Object> map) {
    int result=0;
    result = fileUploadDataDao.getFileUploadDataListCnt(map);
    return result;
}

public File getUploadFile(Map<String, Object> map) throws Exception {
    Map<String, Object> fileMap= fileUploadDataDao.getFileUploadData(map).get(0);
    if(fileMap == null || fileMap.size() <=0) {
        throw new Exception("file data does not exist.");
    }
    StringBuilder sb = new StringBuilder();
    sb.append(fileMap.get("FilePath"));
    sb.append("/");
    sb.append(fileMap.get("FileId"));
    return new File(sb.toString());

}

猜你喜欢

转载自blog.51cto.com/6000734/2351657
今日推荐