0


vue3 el-upload 上传附件及预览 限制只能上传一个图片或者pdf格式的文件

vue3 el-upload 上传附件及预览 限制只能上传一个图片或者pdf格式的文件

效果如图
在这里插入图片描述
直接看代码吧
template部分

<div class="file-upload"><el-upload
        accept=".pdf,image/jpg,image/jpeg,image/png"// 限制文件类型,加上这个属性,当用户选中文件时只展示此处所类型所包含的文件。比如我这里就只展示上面三种图片格式和Pdf,像word和ppt等就不会展示了:action="xxxxxxxxx"// 后端上传文件接口地址:before-upload="handleBeforeUpload"// 文件上传前触发class="upload-demo":limit="1"// 限制能上传的文件个数:on-change="handleChange"// 文件上传状态改变就会触发,添加文件,上传成功,长传失败都会触发:on-exceed="handleExceed"// 超出limit限制就会触发:on-preview="handlePreview"// 点击上产之后的文件触发><el-button type="primary">附件上传</el-button><template #tip><div class="el-upload__tip">
            只能上传一个图片或pdf格式的文件
          </div></template></el-upload><el-button v-if="form.fileUrl" type="primary"><a class="file-upload-link":href="form.fileUrl" target="_blank">预览</a></el-button></div>

css部分

.file-upload{display: flex;justify-content: space-between;.file-upload-link{color: white;}.file-upload-link:visited{color: white;}}.el-upload__tip{color: red;}

js部分

/**
          * @description 解析proxy数据为普通数据
          * @param value 
       */constanalysisProxy=(value: any)=>{returnJSON.parse(JSON.stringify(value))}const state =reactive({form:{fileUrl:'',},})// 文件上传前触发consthandleBeforeUpload=(file)=>{// 拿到文件后缀名const fileType = file.name.substring(file.name.lastIndexOf('.')+1)
        console.log('文件上传类型', fileType)// 当然拉我的需求是只需要图片和pdf,大家有需要可以在此处扩展const isJpg = fileType ==='jpg'const isPng = fileType ==='png'const isJpeg = fileType ==='jpeg'const isPdf = fileType ==='pdf'// const isLt1M = file.size / 1024 / 1024 < 1;// 根据后缀名判断文件类型if(!isJpg &&!isPng &&!isJpeg &&!isPdf){$baseMessage('只能上传图片和pdf格式的文件!','error','vab-hey-message-error')returnfalse}// 可以限制图片的大小// if (!isLt1M) {//     this.$message.error('上传图片大小不能超过 1MB!');// }return isJpg || isPng || isJpeg || isPdf
      }// 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用consthandleChange=(uploadFile,uploadFiles)=>{
        console.log('文件上传',analysisProxy(uploadFile),uploadFiles)// 文件上传成功之后保存后端返回的路径if(analysisProxy(uploadFile).response){
          state.form.fileUrl =analysisProxy(uploadFile).response.data.imageShowUrl
        }}// 文件预览 此处其实就是点击上传之后的文件名字触发//我这里实现预览也很简答就是把后端返回的路径写在a标签的href属性上consthandlePreview=(uploadFile)=>{
        console.log(analysisProxy(uploadFile))
        state.form.fileUrl =analysisProxy(uploadFile).response.data.imageShowUrl
        console.log('文件地址', state.form.fileUrl)}// 文件超出上传限制 此方法是和:limit绑定的// 我这里是limit=1,也就是限制只能传一个文件,当超出这个                                范围时就会触发这个函数consthandleExceed=(files, uploadFiles)=>{
        console.log('限制上传', files, uploadFiles)
        ElMessageBox.alert('只能上传一个文件,如有需要请删除上一个文件再进行上传','温馨提示',{confirmButtonText:'确定',})}return{...toRefs(state),
        handlePreview,
        handleExceed,
        handleBeforeUpload,
        handleChange,}
标签: pdf javascript 前端

本文转载自: https://blog.csdn.net/jieyucx/article/details/128186106
版权归原作者 jieyucx 所有, 如有侵权,请联系我们删除。

“vue3 el-upload 上传附件及预览 限制只能上传一个图片或者pdf格式的文件”的评论:

还没有评论