组件ImageUpload支持多图同时选择上传
This commit is contained in:
		| @@ -1,5 +1,7 @@ | ||||
| package com.ruoyi.web.controller.common; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| import org.slf4j.Logger; | ||||
| @@ -8,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.http.MediaType; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.ruoyi.common.config.RuoYiConfig; | ||||
| @@ -24,6 +27,7 @@ import com.ruoyi.framework.config.ServerConfig; | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/common") | ||||
| public class CommonController | ||||
| { | ||||
|     private static final Logger log = LoggerFactory.getLogger(CommonController.class); | ||||
| @@ -31,13 +35,15 @@ public class CommonController | ||||
|     @Autowired | ||||
|     private ServerConfig serverConfig; | ||||
|  | ||||
|     private static final String FILE_DELIMETER = ","; | ||||
|  | ||||
|     /** | ||||
|      * 通用下载请求 | ||||
|      *  | ||||
|      * @param fileName 文件名称 | ||||
|      * @param delete 是否删除 | ||||
|      */ | ||||
|     @GetMapping("common/download") | ||||
|     @GetMapping("/download") | ||||
|     public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) | ||||
|     { | ||||
|         try | ||||
| @@ -64,9 +70,9 @@ public class CommonController | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 通用上传请求 | ||||
|      * 通用上传请求(单个) | ||||
|      */ | ||||
|     @PostMapping("/common/upload") | ||||
|     @PostMapping("/upload") | ||||
|     public AjaxResult uploadFile(MultipartFile file) throws Exception | ||||
|     { | ||||
|         try | ||||
| @@ -77,8 +83,47 @@ public class CommonController | ||||
|             String fileName = FileUploadUtils.upload(filePath, file); | ||||
|             String url = serverConfig.getUrl() + fileName; | ||||
|             AjaxResult ajax = AjaxResult.success(); | ||||
|             ajax.put("fileName", fileName); | ||||
|             ajax.put("url", url); | ||||
|             ajax.put("fileName", fileName); | ||||
|             ajax.put("newFileName", FileUtils.getName(fileName)); | ||||
|             ajax.put("originalFilename", file.getOriginalFilename()); | ||||
|             return ajax; | ||||
|         } | ||||
|         catch (Exception e) | ||||
|         { | ||||
|             return AjaxResult.error(e.getMessage()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 通用上传请求(多个) | ||||
|      */ | ||||
|     @PostMapping("/uploads") | ||||
|     public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             // 上传文件路径 | ||||
|             String filePath = RuoYiConfig.getUploadPath(); | ||||
|             List<String> urls = new ArrayList<String>(); | ||||
|             List<String> fileNames = new ArrayList<String>(); | ||||
|             List<String> newFileNames = new ArrayList<String>(); | ||||
|             List<String> originalFilenames = new ArrayList<String>(); | ||||
|             for (MultipartFile file : files) | ||||
|             { | ||||
|                 // 上传并返回新文件名称 | ||||
|                 String fileName = FileUploadUtils.upload(filePath, file); | ||||
|                 String url = serverConfig.getUrl() + fileName; | ||||
|                 urls.add(url); | ||||
|                 fileNames.add(fileName); | ||||
|                 newFileNames.add(FileUtils.getName(fileName)); | ||||
|                 originalFilenames.add(file.getOriginalFilename()); | ||||
|             } | ||||
|             AjaxResult ajax = AjaxResult.success(); | ||||
|             ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); | ||||
|             ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); | ||||
|             ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); | ||||
|             ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); | ||||
|             return ajax; | ||||
|         } | ||||
|         catch (Exception e) | ||||
| @@ -90,7 +135,7 @@ public class CommonController | ||||
|     /** | ||||
|      * 本地资源通用下载 | ||||
|      */ | ||||
|     @GetMapping("/common/download/resource") | ||||
|     @GetMapping("/download/resource") | ||||
|     public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) | ||||
|             throws Exception | ||||
|     { | ||||
|   | ||||
| @@ -256,4 +256,22 @@ public class FileUtils | ||||
|         } | ||||
|         return strFileExtendName; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取名称 | ||||
|      *  | ||||
|      * @param fileName 路径名称 | ||||
|      * @return 没有文件路径的名称 | ||||
|      */ | ||||
|     public static String getName(String fileName) | ||||
|     { | ||||
|         if (fileName == null) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
|         int lastUnixPos = fileName.lastIndexOf('/'); | ||||
|         int lastWindowsPos = fileName.lastIndexOf('\\'); | ||||
|         int index = Math.max(lastUnixPos, lastWindowsPos); | ||||
|         return fileName.substring(index + 1); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -125,10 +125,7 @@ public class ScheduleUtils | ||||
|         int count = StringUtils.countMatches(packageName, "."); | ||||
|         if (count > 1) | ||||
|         { | ||||
|             if (!StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR)) | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
|             return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| <template> | ||||
|   <div class="component-upload-image"> | ||||
|     <el-upload | ||||
|       multiple | ||||
|       :action="uploadImgUrl" | ||||
|       list-type="picture-card" | ||||
|       :on-success="handleUploadSuccess" | ||||
| @@ -70,6 +71,8 @@ export default { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       number: 0, | ||||
|       uploadList: [], | ||||
|       dialogImageUrl: "", | ||||
|       dialogVisible: false, | ||||
|       hideUpload: false, | ||||
| @@ -124,9 +127,14 @@ export default { | ||||
|     }, | ||||
|     // 上传成功回调 | ||||
|     handleUploadSuccess(res) { | ||||
|       this.fileList.push({ name: res.fileName, url: res.fileName }); | ||||
|       this.uploadList.push({ name: res.fileName, url: res.fileName }); | ||||
|       if (this.uploadList.length === this.number) { | ||||
|         this.fileList = this.fileList.concat(this.uploadList); | ||||
|         this.uploadList = []; | ||||
|         this.number = 0; | ||||
|         this.$emit("input", this.listToString(this.fileList)); | ||||
|         this.loading.close(); | ||||
|       } | ||||
|     }, | ||||
|     // 上传前loading加载 | ||||
|     handleBeforeUpload(file) { | ||||
| @@ -163,6 +171,7 @@ export default { | ||||
|         text: "上传中", | ||||
|         background: "rgba(0, 0, 0, 0.7)", | ||||
|       }); | ||||
|       this.number++; | ||||
|     }, | ||||
|     // 文件个数超出 | ||||
|     handleExceed() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user