update 图片上传 文件上传 支持并发上传

This commit is contained in:
疯狂的狮子li 2022-02-28 12:10:55 +08:00
parent 81ab861036
commit 147eb7a9e5
3 changed files with 40 additions and 31 deletions

View File

@ -7,7 +7,6 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpException; import cn.hutool.http.HttpException;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
@ -70,7 +69,6 @@ public class SysOssController extends BaseController {
}) })
@SaCheckPermission("system:oss:upload") @SaCheckPermission("system:oss:upload")
@Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping("/upload") @PostMapping("/upload")
public R<Map<String, String>> upload(@RequestPart("file") MultipartFile file) { public R<Map<String, String>> upload(@RequestPart("file") MultipartFile file) {
if (ObjectUtil.isNull(file)) { if (ObjectUtil.isNull(file)) {

View File

@ -1,6 +1,7 @@
<template> <template>
<div class="upload-file"> <div class="upload-file">
<el-upload <el-upload
multiple
:action="uploadFileUrl" :action="uploadFileUrl"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
:file-list="fileList" :file-list="fileList"
@ -69,6 +70,8 @@ export default {
}, },
data() { data() {
return { return {
number: 0,
uploadList: [],
baseUrl: process.env.VUE_APP_BASE_API, baseUrl: process.env.VUE_APP_BASE_API,
uploadFileUrl: process.env.VUE_APP_BASE_API + "/system/oss/upload", // uploadFileUrl: process.env.VUE_APP_BASE_API + "/system/oss/upload", //
headers: { headers: {
@ -122,7 +125,7 @@ export default {
return false; return false;
}); });
if (!isTypeOk) { if (!isTypeOk) {
this.$message.error(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
return false; return false;
} }
} }
@ -130,26 +133,34 @@ export default {
if (this.fileSize) { if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize; const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) { if (!isLt) {
this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`); this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
return false; return false;
} }
} }
this.$modal.loading("正在上传文件,请稍候...");
this.number++;
return true; return true;
}, },
// //
handleExceed() { handleExceed() {
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
// //
handleUploadError(err) { handleUploadError(err) {
this.$message.error("上传失败, 请重试"); this.$modal.msgError("上传图片失败,请重试");
this.$modal.closeLoading()
}, },
// //
handleUploadSuccess(res, file) { handleUploadSuccess(res, file) {
if (res.code === 200) { if (res.code === 200) {
this.$message.success("上传成功"); this.uploadList.push({ name: res.data.fileName, url: res.data.url });
this.fileList.push({ name: res.data.fileName, url: res.data.url }); if (this.uploadList.length === this.number) {
this.$emit("input", this.listToString(this.fileList)); this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
}
} else { } else {
this.$message.error(res.msg); this.$message.error(res.msg);
this.loading.close(); this.loading.close();
@ -163,7 +174,7 @@ export default {
// //
getFileName(name) { getFileName(name) {
if (name.lastIndexOf("/") > -1) { if (name.lastIndexOf("/") > -1) {
return name.slice(name.lastIndexOf("/") + 1).toLowerCase(); return name.slice(name.lastIndexOf("/") + 1);
} else { } else {
return ""; return "";
} }

View File

@ -1,6 +1,7 @@
<template> <template>
<div class="component-upload-image"> <div class="component-upload-image">
<el-upload <el-upload
multiple
:action="uploadImgUrl" :action="uploadImgUrl"
list-type="picture-card" list-type="picture-card"
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
@ -18,7 +19,7 @@
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
<!-- 上传提示 --> <!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip"> <div class="el-upload__tip" slot="tip" v-if="showTip">
请上传 请上传
@ -70,6 +71,8 @@ export default {
}, },
data() { data() {
return { return {
number: 0,
uploadList: [],
dialogImageUrl: "", dialogImageUrl: "",
dialogVisible: false, dialogVisible: false,
hideUpload: false, hideUpload: false,
@ -121,12 +124,17 @@ export default {
// //
handleUploadSuccess(res) { handleUploadSuccess(res) {
if (res.code == 200) { if (res.code == 200) {
this.fileList.push({ name: res.data.fileName, url: res.data.url }); this.uploadList.push({ name: res.data.fileName, url: res.data.url });
this.$emit("input", this.listToString(this.fileList)); if (this.uploadList.length === this.number) {
this.loading.close(); this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
}
} else { } else {
this.$message.error(res.msg); this.$modal.msgError(res.msg);
this.loading.close(); this.$modal.closeLoading();
} }
}, },
// loading // loading
@ -147,35 +155,27 @@ export default {
} }
if (!isImg) { if (!isImg) {
this.$message.error( this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`
);
return false; return false;
} }
if (this.fileSize) { if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize; const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) { if (!isLt) {
this.$message.error(`上传头像图片大小不能超过 ${this.fileSize} MB!`); this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
return false; return false;
} }
} }
this.loading = this.$loading({ this.$modal.loading("正在上传图片,请稍候...");
lock: true, this.number++;
text: "上传中",
background: "rgba(0, 0, 0, 0.7)",
});
}, },
// //
handleExceed() { handleExceed() {
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
// //
handleUploadError(res) { handleUploadError(res) {
this.$message({ this.$modal.msgError("上传图片失败,请重试");
type: "error", this.$modal.closeLoading();
message: "上传失败",
});
this.loading.close();
}, },
// //
handlePictureCardPreview(file) { handlePictureCardPreview(file) {