修改文件上传代码
main
zxf 7 days ago
parent b9a77f6868
commit df8a36ea16

File diff suppressed because it is too large Load Diff

@ -0,0 +1,409 @@
<template>
<div class="upload-file">
<div class="upload-tool">
<el-select v-if="typeOptions && typeOptions.length > 0" style="margin-right: 10px;" v-model="uploadParame.remark"
placeholder="请选择文件类型">
<el-option v-for="item in typeOptions" :key="item.value" :label="item.value + ' - ' + item.label"
:value="item.value"></el-option>
</el-select>
<el-upload
multiple
action
:http-request="handleUploadForm"
:before-upload="handleBeforeUpload"
:file-list="fileList"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
:show-file-list="imageOnly"
:headers="myHeaders"
:on-remove="handleRemove"
:list-type="imageOnly?'picture-card':'text'"
class="upload-file-uploader"
ref="fileUpload"
>
<template v-if="imageOnly">
<i class="el-icon-plus"></i>
</template>
<template v-else>
<!-- 上传按钮 -->
<el-button size="mini" type="primary"
:disabled="typeOptions && typeOptions.length > 0 && !uploadParame.remark">选取文件
</el-button>
</template>
</el-upload>
</div>
<!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip && !imageOnly">
请上传
<template v-if="fileSize"> <b style="color: #f56c6c">{{ fileSize }}MB</b></template>
<template v-if="fileType"> <b style="color: #f56c6c">{{ fileType.join("/") }}</b></template>
的文件
</div>
<!-- 文件列表 -->
<transition-group v-if="!imageOnly" class="upload-file-list el-upload-list el-upload-list--text"
name="el-fade-in-linear" tag="ul">
<li :key="file.id || file.attachFileUrl" class="el-upload-list__item" v-for="(file, index) in displayFileList">
<div v-if="file._isFrist">
<dict-tag :options="typeOptions" :value="file.remark"></dict-tag>
</div>
<div class="ele-upload-list__item-content">
<el-link :underline="false" @click="handleFileDownload(file)">
<span class="el-icon-document"> {{ getFileName(file.oldName) }} </span>
</el-link>
<div class="ele-upload-list__item-content-action">
<el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
</div>
</div>
</li>
</transition-group>
</div>
</template>
<script>
import {getToken} from "@/utils/auth";
import {fileFileApi} from '@/api/systemSetting';
export default {
name: "FileUploadVO",
props: {
//
typeOptions: [Array],
//
value: [String, Object, Array],
//
limit: {
type: Number,
default: 5,
},
// (MB)
fileSize: {
type: Number,
default: 50,
},
// , ['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: function () {
return ["doc", "docx", "xls", "ppt", "txt", "pdf", "xlsx", "jpg", "jpeg", "png"];
},
},
//
isShowTip: {
type: Boolean,
default: true
},
imageOnly: {
type: Boolean,
default: false,
}
},
data() {
return {
number: 0,
uploadList: [],
baseUrl: process.env.VUE_APP_BASE_API,
myHeaders: {
'X-Token': getToken()
},
fileList: [],
uploadParame: {
remark: ''
}
};
},
watch: {
value: {
handler(val) {
if (val) {
let temp = 1;
const list = Array.isArray(val) ? val : [val];
this.fileList = list.map(function (item) {
// oldName attachFileUrl
item.oldName = item.oldName || '未知文件名';
item.attachFileUrl = item.attachFileUrl || '';
item.uid = item.uid || new Date().getTime() + temp++;
return item;
});
} else {
this.fileList = [];
}
},
deep: true,
immediate: true
},
},
computed: {
//
showTip() {
return this.isShowTip && (this.fileType || this.fileSize);
},
displayFileList() {
if (this.typeOptions && this.typeOptions.length > 0) {
const list = this.fileList.sort(function (a, b) {
return a.remark - b.remark;
});
let tempType = null;
list.forEach(function (item, index) {
if (index === 0) {
item._isFrist = true;
tempType = item.remark;
} else if (item.remark !== tempType) {
item._isFrist = true;
tempType = item.remark;
} else {
item._isFrist = false;
}
});
return list;
}
return this.fileList;
},
},
methods: {
//
handleBeforeUpload(file) {
//
if (this.fileType) {
const fileName = file.name.split('.');
const fileExt = fileName[fileName.length - 1];
const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
if (!isTypeOk) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
return false;
}
}
//
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
return false;
}
}
this.$modal.loading("正在上传文件,请稍候...");
this.number++;
return true;
},
//
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
},
//
handleUploadError(err) {
this.$message.error("上传文件失败,请重试");
this.$modal.closeLoading()
},
//
handleUploadForm(param) {
const formData = new FormData()
const data = {
model: this.$route.path.split('/')[1],
pid: 10
}
//
if (this.uploadParame.remark) {
data.remark = this.uploadParame.remark;
}
formData.append('multipart', param.file)
const loading = this.$loading({
lock: true,
text: '上传中,请稍候...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
var _this = this;
console.log(this.baseUrl);
fileFileApi(formData, data).then(function (res) {
loading.close()
// code
//
const fileInfo = res || {};
const newFile = {
id: fileInfo.id || '',
oldName: fileInfo.fileName || param.file.name,
attachFileUrl: fileInfo.url || fileInfo.path || '',
remark: _this.uploadParame.remark || '',
uid: param.file.uid
};
_this.uploadList.push(newFile);
_this.uploadedSuccessfully();
}).catch(function (error) {
loading.close()
console.error('上传错误:', error)
_this.$message.error('上传失败,请重试')
})
},
//
handleUploadSuccess(res, file) {
//
if (res && res.code === 200) {
const newFile = {
id: res.id || '',
oldName: file.name,
attachFileUrl: res.url || '',
remark: this.uploadParame.remark || '',
uid: file.uid
};
this.uploadList.push(newFile);
this.uploadedSuccessfully();
}
},
handleRemove(file) {
this.fileList = this.fileList.filter(function (item) {
return item !== file;
});
this.$emit("input", this.fileList);
},
//
handleDelete(index) {
this.fileList.splice(index, 1);
this.$emit("input", this.fileList);
},
//
uploadedSuccessfully() {
if (this.number > 0 && this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.fileList);
this.$modal.closeLoading();
}
},
//
getFileName(name) {
if (typeof name === 'string' && name.lastIndexOf("/") > -1) {
return name.slice(name.lastIndexOf("/") + 1);
} else {
return name;
}
},
// URL
getFullFileUrl(url) {
if (!url) return '';
// URLHTTP
if (url.startsWith('http://') || url.startsWith('https://')) {
return url;
}
// baseUrl
//
const base = this.baseUrl.endsWith('/') ? this.baseUrl.slice(0, -1) : this.baseUrl;
const path = url.startsWith('/') ? url : '/' + url;
return base + path;
},
//
listToString(list, separator) {
let strs = "";
separator = separator || ",";
for (let i in list) {
strs += list[i].attachFileUrl + separator;
}
return strs !== '' ? strs.substr(0, strs.length - 1) : '';
},
//
handleFileDownload(file) {
//
this.$modal.loading("下载文件中,请稍候...");
// token
const token = getToken();
if (!token) {
this.$modal.closeLoading();
this.$modal.msgError("未获取到登录凭证,请重新登录");
return;
}
// XMLHttpRequest
const xhr = new XMLHttpRequest();
const fileUrl = this.getFullFileUrl(file.attachFileUrl);
xhr.open('GET', fileUrl, true);
// blob
xhr.responseType = 'blob';
// token
xhr.setRequestHeader('X-Token', token);
//
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
this.$modal.closeLoading();
if (xhr.status === 200) {
//
const url = window.URL.createObjectURL(new Blob([xhr.response]));
const link = document.createElement('a');
link.style.display = 'none';
link.href = url;
//
link.setAttribute('download', file.oldName || `file_${Date.now()}`);
document.body.appendChild(link);
link.click();
//
setTimeout(() => {
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
}, 100);
} else {
//
let errorMsg = `文件下载失败,状态码: ${xhr.status}`;
try {
//
const errorData = JSON.parse(xhr.responseText);
if (errorData.message) {
errorMsg = errorData.message;
}
} catch (e) {
// JSON
}
this.$modal.msgError(errorMsg);
}
}
};
//
xhr.onerror = () => {
this.$modal.closeLoading();
this.$modal.msgError("网络错误,文件下载失败");
};
//
xhr.send();
}
}
};
</script>
<style scoped lang="scss">
.upload-tool {
display: flex;
align-items: center;
}
.upload-file-uploader {
margin-bottom: 5px;
}
.upload-file-list .el-upload-list__item {
border: 1px solid #e4e7ed;
line-height: 2;
margin-bottom: 10px;
position: relative;
}
.upload-file-list .ele-upload-list__item-content {
display: flex;
justify-content: space-between;
align-items: center;
color: inherit;
}
.ele-upload-list__item-content-action .el-link {
margin-right: 10px;
}
</style>

@ -1,9 +1,9 @@
<template>
<div class="divBox">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="客户代码">
<el-input v-model="dataForm.custCode" placeholder="请输入客户代码" clearable></el-input>
</el-form-item>
<!-- <el-form-item label="客户代码">-->
<!-- <el-input v-model="dataForm.custCode" placeholder="请输入客户代码" clearable></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="客户名称">
<el-input v-model="dataForm.custName" placeholder="请输入客户名称" clearable></el-input>
</el-form-item>

@ -1,9 +1,9 @@
<template>
<div class="divBox">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="供应商id">
<el-input v-model="dataForm.custId" placeholder="请输入供应商id" clearable></el-input>
</el-form-item>
<!-- <el-form-item label="供应商id">-->
<!-- <el-input v-model="dataForm.custId" placeholder="请输入供应商id" clearable></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="供应商名称">
<el-input v-model="dataForm.custName" placeholder="请输入供应商名称" clearable></el-input>
</el-form-item>

@ -5,7 +5,7 @@
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 新增和修改表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="80px">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="100px">
<el-form-item label="供应商类型" prop="supplierType">
<el-input v-model="dataForm.supplierType" placeholder="供应商类型"></el-input>
</el-form-item>
@ -51,9 +51,6 @@
supplierType: [
{ required: true, message: '供应商类型 为必填项', trigger: 'blur' }
],
itemNo: [
{ required: true, message: '序号 为必填项', trigger: 'blur' }
],
qualifyType: [
{ required: true, message: '资质类型 为必填项', trigger: 'blur' }
],
@ -63,9 +60,6 @@
isRequired: [
{ required: true, message: '是否必填 为必填项', trigger: 'blur' }
],
remark: [
{ required: true, message: '备注 为必填项', trigger: 'blur' }
],
}
}
},

@ -5,25 +5,28 @@
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 新增和修改表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="80px">
<el-form-item label="供应商id" prop="custId">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="100px">
<!-- <el-form-item label="供应商id" prop="custId">
<el-input v-model="dataForm.custId" placeholder="供应商id"></el-input>
</el-form-item>
</el-form-item>-->
<el-form-item label="供应商名称" prop="custName">
<el-input v-model="dataForm.custName" placeholder="供应商名称"></el-input>
</el-form-item>
<el-form-item label="资质id" prop="qualifyId">
<!-- <el-form-item label="资质id" prop="qualifyId">
<el-input v-model="dataForm.qualifyId" placeholder="资质id"></el-input>
</el-form-item>
</el-form-item>-->
<el-form-item label="资质名称" prop="qualifyName">
<el-input v-model="dataForm.qualifyName" placeholder="资质名称"></el-input>
</el-form-item>
<el-form-item label="文件id" prop="fileId">
<!-- <el-form-item label="文件id" prop="fileId">
<el-input v-model="dataForm.fileId" placeholder="文件id"></el-input>
</el-form-item>
</el-form-item>-->
<el-form-item label="提交日期" prop="submitDate">
<el-input v-model="dataForm.submitDate" placeholder="提交日期"></el-input>
</el-form-item>
<el-form-item label="资质文件" prop="file">
<FileUploadVO v-model="dataForm.file" ></FileUploadVO>
</el-form-item>
<el-form-item label="是否通过" prop="isPass">
<el-input v-model="dataForm.isPass" placeholder="是否通过"></el-input>
</el-form-item>
@ -46,7 +49,11 @@
<script>
import * as api from '@/api/cmcustqualifyfile.js'
import FileUploadVO from '@/components/FileUploadVO/index.vue'
export default {
components: {
FileUploadVO
},
data () {
return {
visible: false,
@ -57,43 +64,21 @@
qualifyId: '' ,
qualifyName: '' ,
fileId: '' ,
fileUrl: '',
submitDate: '' ,
isPass: '' ,
passContent: '' ,
status: '' ,
remark: '' ,
},
fileList: [],
dataRule: {
custId: [
{ required: true, message: '供应商id 为必填项', trigger: 'blur' }
],
custName: [
{ required: true, message: '供应商名称 为必填项', trigger: 'blur' }
],
qualifyId: [
{ required: true, message: '资质id 为必填项', trigger: 'blur' }
],
qualifyName: [
{ required: true, message: '资质名称 为必填项', trigger: 'blur' }
],
fileId: [
{ required: true, message: '文件id 为必填项', trigger: 'blur' }
],
submitDate: [
{ required: true, message: '提交日期 为必填项', trigger: 'blur' }
],
isPass: [
{ required: true, message: '是否通过 为必填项', trigger: 'blur' }
],
passContent: [
{ required: true, message: '不通过原因 为必填项', trigger: 'blur' }
],
status: [
{ required: true, message: '状态 为必填项', trigger: 'blur' }
],
remark: [
{ required: true, message: '备注 为必填项', trigger: 'blur' }
],
}
}
},
@ -106,7 +91,25 @@
if (this.dataForm.id) {
api.cmcustqualifyfileDetailApi(id).then(function(res) {
this.dataForm = res;
//
if (res.fileId && res.fileUrl) {
this.fileList = [{
id: res.fileId,
oldName: res.fileUrl.split('/').pop() || '未知文件',
attachFileUrl: res.fileUrl
}];
} else if (res.fileId) {
this.fileList = [{
id: res.fileId,
oldName: '未知文件',
attachFileUrl: res.fileId
}];
} else {
this.fileList = [];
}
}.bind(this))
} else {
this.fileList = [];
}
}.bind(this))
},
@ -114,19 +117,43 @@
dataSubmit () {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
// fileListdataForm
if (this.fileList && this.fileList.length > 0) {
const file = this.fileList[0];
this.dataForm.fileId = file.id || '';
this.dataForm.fileUrl = file.attachFileUrl || '';
} else {
this.dataForm.fileId = '';
this.dataForm.fileUrl = '';
}
this.$confirm('确认要' + (this.dataForm.id ? '修改' : '新增') + '吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
if (this.dataForm.id) {
api.cmcustqualifyfileUpdateApi(this.dataForm).then(function(res) {
this.$message.success('保存成功')
if (res.code === 200) {
this.$message.success('操作成功')
this.visible = false
this.$emit('refreshDataList')
}.bind(this));
} else {
this.$message.error(res.msg || '操作失败')
}
}.bind(this))
} else {
api.cmcustqualifyfileCreateApi(this.dataForm).then(function(res) {
this.$message.success('新增成功')
if (res.code === 200) {
this.$message.success('操作成功')
this.visible = false
this.$emit('refreshDataList')
}.bind(this));
} else {
this.$message.error(res.msg || '操作失败')
}
}.bind(this))
}
}.bind(this))
}
})
}

@ -1,30 +1,12 @@
<template>
<div class="divBox">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="供应商id">
<el-input v-model="dataForm.custId" placeholder="请输入供应商id" clearable></el-input>
</el-form-item>
<el-form-item label="供应商名称">
<el-input v-model="dataForm.custName" placeholder="请输入供应商名称" clearable></el-input>
</el-form-item>
<el-form-item label="资质id">
<el-input v-model="dataForm.qualifyId" placeholder="请输入资质id" clearable></el-input>
</el-form-item>
<el-form-item label="资质名称">
<el-input v-model="dataForm.qualifyName" placeholder="请输入资质名称" clearable></el-input>
</el-form-item>
<el-form-item label="文件id">
<el-input v-model="dataForm.fileId" placeholder="请输入文件id" clearable></el-input>
</el-form-item>
<el-form-item label="提交日期">
<el-input v-model="dataForm.submitDate" placeholder="请输入提交日期" clearable></el-input>
</el-form-item>
<el-form-item label="是否通过">
<el-input v-model="dataForm.isPass" placeholder="请输入是否通过" clearable></el-input>
</el-form-item>
<el-form-item label="不通过原因">
<el-input v-model="dataForm.passContent" placeholder="请输入不通过原因" clearable></el-input>
</el-form-item>
<el-form-item label="状态">
<el-input v-model="dataForm.status" placeholder="请输入状态" clearable></el-input>
</el-form-item>
@ -50,42 +32,18 @@
align="center"
width="50">
</el-table-column>
<el-table-column
prop="id"
header-align="center"
align="center"
label="id">
</el-table-column>
<el-table-column
prop="custId"
header-align="center"
align="center"
label="供应商id">
</el-table-column>
<el-table-column
prop="custName"
header-align="center"
align="center"
label="供应商名称">
</el-table-column>
<el-table-column
prop="qualifyId"
header-align="center"
align="center"
label="资质id">
</el-table-column>
<el-table-column
prop="qualifyName"
header-align="center"
align="center"
label="资质名称">
</el-table-column>
<el-table-column
prop="fileId"
header-align="center"
align="center"
label="文件id">
</el-table-column>
<el-table-column
prop="submitDate"
header-align="center"
@ -116,48 +74,6 @@
align="center"
label="备注">
</el-table-column>
<el-table-column
prop="delFlag"
header-align="center"
align="center"
label="删除标志0代表存在 2代表删除">
</el-table-column>
<el-table-column
prop="createDept"
header-align="center"
align="center"
label="创建部门">
</el-table-column>
<el-table-column
prop="createBy"
header-align="center"
align="center"
label="创建人">
</el-table-column>
<el-table-column
prop="createTime"
header-align="center"
align="center"
label="创建时间">
</el-table-column>
<el-table-column
prop="updateBy"
header-align="center"
align="center"
label="修改人">
</el-table-column>
<el-table-column
prop="updateTime"
header-align="center"
align="center"
label="修改时间">
</el-table-column>
<el-table-column
prop="tenantId"
header-align="center"
align="center"
label="租户ID">
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
@ -232,6 +148,10 @@
activated () {
this.getDataList()
},
mounted() {
//
this.getDataList()
},
methods: {
//
getDataList () {

@ -4,9 +4,6 @@
<el-form-item label="供应商类型">
<el-input v-model="dataForm.supplierType" placeholder="请输入供应商类型" clearable></el-input>
</el-form-item>
<el-form-item label="序号">
<el-input v-model="dataForm.itemNo" placeholder="请输入序号" clearable></el-input>
</el-form-item>
<el-form-item label="资质类型">
<el-input v-model="dataForm.qualifyType" placeholder="请输入资质类型" clearable></el-input>
</el-form-item>
@ -16,9 +13,6 @@
<el-form-item label="是否必填">
<el-input v-model="dataForm.isRequired" placeholder="请输入是否必填" clearable></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="dataForm.remark" placeholder="请输入备注" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()"></el-button>
<el-button @click="resetForm()"></el-button>
@ -114,17 +108,6 @@
isRequired: '',
remark: '',
},
//
resetForm() {
this.dataForm = {
supplierType: '',
itemNo: '',
qualifyType: '',
qualifyName: '',
isRequired: '',
remark: '',
}
},
dataList: [],
pageIndex: 1,
pageSize: 10,
@ -134,13 +117,28 @@
addOrUpdateVisible: false
}
},
components: {
AddOrUpdate
},
activated () {
this.getDataList()
},
mounted() {
//
this.getDataList()
},
components: {
AddOrUpdate
},
methods: {
//
resetForm() {
this.dataForm = {
supplierType: '',
itemNo: '',
qualifyType: '',
qualifyName: '',
isRequired: '',
remark: '',
}
},
//
getDataList () {
this.dataListLoading = true

@ -39,6 +39,9 @@ public class SystemAttachment implements Serializable {
@ApiModelProperty(value = "附件名称")
private String name;
@ApiModelProperty(value = "附件名称")
private String fileId;
@ApiModelProperty(value = "附件路径")
private String attDir;

@ -16,6 +16,9 @@ import lombok.Data;
@Data
public class FileResultVo{
// 文件id
private String id;
// 文件名
private String fileName;

@ -323,19 +323,19 @@ public class UploadServiceImpl implements UploadService {
// 判断文件的后缀名是否符合规则
// isContains(extName);
if (StringUtils.isNotEmpty(uploadCommonVo.getExtStr())) {
// 切割文件扩展名
List<String> extensionList = CrmebUtil.stringToArrayStr(uploadCommonVo.getExtStr());
if (extensionList.size() > 0) {
//判断
if (!extensionList.contains(extName)) {
throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr());
}
} else {
throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr());
}
}
// if (StringUtils.isNotEmpty(uploadCommonVo.getExtStr())) {
// // 切割文件扩展名
// List<String> extensionList = CrmebUtil.stringToArrayStr(uploadCommonVo.getExtStr());
//
// if (extensionList.size() > 0) {
// //判断
// if (!extensionList.contains(extName)) {
// throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr());
// }
// } else {
// throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr());
// }
// }
//文件名
String newFileName = UploadUtil.fileName(extName);
@ -368,7 +368,7 @@ public class UploadServiceImpl implements UploadService {
systemAttachment.setName(resultFile.getFileName());
systemAttachment.setSattDir(resultFile.getUrl());
systemAttachment.setAttSize(resultFile.getFileSize().toString());
systemAttachment.setAttType(resultFile.getType());
systemAttachment.setAttType(resultFile.getExtName());
systemAttachment.setImageType(1); //图片上传类型 1本地 2七牛云 3OSS 4COS, 默认本地,任务轮询数据库放入云服务
systemAttachment.setPid(pid);
@ -376,6 +376,7 @@ public class UploadServiceImpl implements UploadService {
// 保存文件
multipartFile.transferTo(file);
systemAttachmentService.save(systemAttachment);
resultFile.setId(String.valueOf(systemAttachment.getAttId()));
return resultFile;
}
// 判断是否保存本地

Loading…
Cancel
Save