mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	组件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.$emit("input", this.listToString(this.fileList));
 | 
			
		||||
      this.loading.close();
 | 
			
		||||
      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