package com.mlongbo.jfinal.api; import com.jfinal.aop.Before; import com.jfinal.upload.UploadFile; import com.mlongbo.jfinal.common.bean.Code; import com.mlongbo.jfinal.common.bean.FileResponse; import com.mlongbo.jfinal.common.utils.FileUtils; import com.mlongbo.jfinal.common.utils.StringUtils; import com.mlongbo.jfinal.interceptor.TokenInterceptor; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 文件上传总的控制器,所有文件上传类表单均拆分成文件上传和文本提交 * @author mlongbo */ @Before(TokenInterceptor.class) public class FileAPIController extends BaseAPIController { /** * 处理单文件或多文件上传,上传成功后,返回url集合 */ public void upload(){ if (!methodType("post")) { render404(); return; } FileResponse response = new FileResponse(); try { List<UploadFile> fileList = getFiles();//已接收到的文件 if(fileList != null && !fileList.isEmpty()){ Map<String, String> urls = new HashMap<String, String>();//用于保存上传成功的文件地址 List<String> failedFiles = new ArrayList<String>(); //用于保存未成功上传的文件名 for(UploadFile uploadFile : fileList){ File file=uploadFile.getFile(); String urlPath = FileUtils.saveUploadFile(file); if (StringUtils.isEmpty(urlPath)) { failedFiles.add(uploadFile.getParameterName());//标记为上传失败 } else { //返回相对路径,用于响应 urls.put(uploadFile.getParameterName(), urlPath + file.getName()); } } response.setDatum(urls); if (failedFiles.size() > 0) { response.setCode(Code.FAIL);//表示此次上传有未上传成功的文件 response.setFailed(failedFiles); } }else{ response.setCode(Code.ARGUMENT_ERROR).setMessage("uploadFileName can not be null"); } } catch (Exception e) { e.printStackTrace(); response.setCode(Code.ERROR); } renderJson(response); } }