注:例子中我移除了一些不必要的代码,以免过多没必要的代码影响大家的理解和阅读
class ContractController extends Controller
{
/**
* @描述:上传文件到本地
* @param Request $request
*/
public function editUpload(Request $request)
{
try {
$extension = $request->file('file')->extension(); //上传文件的文件扩展名
if ($extension != 'pdf') {
throw new \Exception("请上传pdf格式文件");
}
$name = $request->file('file')->getClientOriginalName(); //上传文件的原始名称
$path = $request->file('file')->storeAs('/uploads/renewalPlug/contract', $name, 'uploads');
$result['cndLocation'] = '/' . $path;
return $this->created($result);
} catch (\Exception $e) {
return $this->error("上传失败:" . $e->getMessage());
}
}
}
//上传合同文件
Route::post('guild/contract/editUpload', [C\Guild\ContractController::class, 'editUpload']);
<template>
<div v-loading="loading || $store.state.error_loading" class="main">
<el-form :model="ruleForm" status-icon ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="默认合同" prop="is_default">
<el-switch v-model="ruleForm.is_default" active-color="#13ce66" inactive-color="#ff4949"
:active-value="1" :inactive-value="0">
</el-switch>
</el-form-item>
<el-form-item label="标题" prop="title" :rules="[{ required: true, message: '标题不能为空' },]">
<el-input v-model="ruleForm.title"></el-input>
</el-form-item>
<el-form-item label="选择合同" :rules="[{ required: true, message: '文件不能为空' },]">
<el-upload
@click.native="editUploadPng"
class="upload-demo" drag :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
action="/admin-api/guild/contract/editUpload"
:data="cachainData"
:limit="1"
:file-list="fileList"
:before-remove="beforeRemove"
list-type="pdf">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传pdf文件,且不超过10M</div>
</el-upload>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')" v-html="status == 'edit' ? `更改` : `新增`">
</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
channel_name: 'Edit',
filters: {},
data() {
return {
regions: [],
loading: false,
regonShow: false,
ruleForm: {
is_default: 0,
},
cachainData: {},
fileList: []
}
},
watch: {
dialogVisible(val) {
if (val) this.initData()
}
},
mounted() {
this.initData();
},
created() {
},
methods: {
initData() {
this.fileList = [];
this.fileList.push({ 'name': '默认显示名', 'url': 'url地址' })
},
editUploadPng() {
this.cachainData = {
// id: this.ruleForm.id,
// platform_id: this.ruleForm.platform_id || 0,
// plugin_name: this.ruleForm.title,
}
},
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) {
this.$message.error('上传文件大小不能超过 10MB!');
}
// 截取上传文件的后缀名
let fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
if (fileType !== 'pdf') {
this.$message.error('上传文件必须是pdf格式');
}
return isLt2M;
},
handleAvatarSuccess(res, file) {
this.ruleForm.url = res.cndLocation;
},
beforeRemove(file, fileList) {
// console.log(file)
//pop方法是删除数值最后一个值
// fileList.pop()
this.ruleForm.url = '';
}
}
}
</script>
