update 优化文件上传、图片上传组件 文件列表展示文件原名便于后续处理, 完善组件删除功能
| | |
| | | import com.ruoyi.system.domain.SysOss; |
| | | import com.ruoyi.system.domain.bo.SysOssBo; |
| | | import com.ruoyi.system.domain.vo.SysOssVo; |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import com.ruoyi.system.service.ISysOssService; |
| | | import io.swagger.annotations.*; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | public class SysOssController extends BaseController { |
| | | |
| | | private final ISysOssService iSysOssService; |
| | | private final ISysConfigService iSysConfigService; |
| | | |
| | | /** |
| | | * 查询OSS对象存储列表 |
| | |
| | | SysOss oss = iSysOssService.upload(file); |
| | | Map<String, String> map = new HashMap<>(2); |
| | | map.put("url", oss.getUrl()); |
| | | map.put("fileName", oss.getFileName()); |
| | | map.put("fileName", oss.getOriginalName()); |
| | | map.put("ossId", oss.getOssId().toString()); |
| | | return R.ok(map); |
| | | } |
| | | |
| | |
| | | |
| | | <script> |
| | | import { getToken } from "@/utils/auth"; |
| | | import { delOss } from "@/api/system/oss"; |
| | | |
| | | export default { |
| | | name: "FileUpload", |
| | |
| | | const list = Array.isArray(val) ? val : this.value.split(','); |
| | | // 然后将数组转为对象数组 |
| | | this.fileList = list.map(item => { |
| | | if (typeof item === "string") { |
| | | item = { name: item, url: item }; |
| | | } |
| | | item = { name: item.name, url: item.url, ossId: item.ossId }; |
| | | item.uid = item.uid || new Date().getTime() + temp++; |
| | | return item; |
| | | }); |
| | |
| | | // 上传成功回调 |
| | | handleUploadSuccess(res, file) { |
| | | if (res.code === 200) { |
| | | this.uploadList.push({ name: res.data.fileName, url: res.data.url }); |
| | | this.uploadList.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId }); |
| | | 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.$emit("input", this.fileList); |
| | | this.$modal.closeLoading(); |
| | | } |
| | | } else { |
| | |
| | | }, |
| | | // 删除文件 |
| | | handleDelete(index) { |
| | | let ossId = this.fileList[index].ossId; |
| | | delOss(ossId); |
| | | this.fileList.splice(index, 1); |
| | | this.$emit("input", this.listToString(this.fileList)); |
| | | this.$emit("input", this.fileList); |
| | | }, |
| | | // 获取文件名称 |
| | | getFileName(name) { |
| | | // 如果是url那么取最后的名字 如果不是直接返回 |
| | | if (name.lastIndexOf("/") > -1) { |
| | | return name.slice(name.lastIndexOf("/") + 1); |
| | | } else { |
| | | return ""; |
| | | return name; |
| | | } |
| | | }, |
| | | // 对象转成指定字符串分隔 |
| | | listToString(list, separator) { |
| | | let strs = ""; |
| | | separator = separator || ","; |
| | | for (let i in list) { |
| | | strs += list[i].url + separator; |
| | | } |
| | | return strs != "" ? strs.substr(0, strs.length - 1) : ""; |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | |
| | | <script> |
| | | import { getToken } from "@/utils/auth"; |
| | | import { delOss } from "@/api/system/oss"; |
| | | |
| | | export default { |
| | | props: { |
| | |
| | | const list = Array.isArray(val) ? val : this.value.split(','); |
| | | // 然后将数组转为对象数组 |
| | | this.fileList = list.map(item => { |
| | | if (typeof item === "string") { |
| | | item = { name: item, url: item }; |
| | | } |
| | | // 此处name使用ossId 防止删除出现重名 |
| | | item = { name: item.ossId, url: item.url, ossId: item.ossId }; |
| | | return item; |
| | | }); |
| | | } else { |
| | |
| | | handleRemove(file, fileList) { |
| | | const findex = this.fileList.map(f => f.name).indexOf(file.name); |
| | | if(findex > -1) { |
| | | let ossId = this.fileList[findex].ossId; |
| | | delOss(ossId); |
| | | this.fileList.splice(findex, 1); |
| | | this.$emit("input", this.listToString(this.fileList)); |
| | | this.$emit("input", this.fileList); |
| | | } |
| | | }, |
| | | // 上传成功回调 |
| | | handleUploadSuccess(res) { |
| | | if (res.code == 200) { |
| | | this.uploadList.push({ name: res.data.fileName, url: res.data.url }); |
| | | this.uploadList.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId }); |
| | | 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.$emit("input", this.fileList); |
| | | this.$modal.closeLoading(); |
| | | } |
| | | } else { |
| | |
| | | this.dialogImageUrl = file.url; |
| | | this.dialogVisible = true; |
| | | }, |
| | | // 对象转成指定字符串分隔 |
| | | listToString(list, separator) { |
| | | let strs = ""; |
| | | separator = separator || ","; |
| | | for (let i in list) { |
| | | strs += list[i].url + separator; |
| | | } |
| | | return strs != '' ? strs.substr(0, strs.length - 1) : ''; |
| | | } |
| | | } |
| | | }; |
| | | </script> |