• 上传图片控制文件名相关


    这是一个比较简单,正常的上传文件流程,具体的特殊情况可能还需要具体再讨论
    ————————————————
    版权声明:本文为CSDN博主「YorcentLuo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yorcentroll/java/article/details/103304880

    其实打开文件资源对话框的方式有好几种,但是世界使用input控件是最直接和方便的那种。

    ok,直接先上代码。

    <zl-button size="mini" class="upload-file">
    <input @change="fileUpload" type="file" accept=".xls,.xlsx" ref="uploadFile" v-if="!isUping"/>
    <font v-if="!isUping">上传文件</font>
    <cite v-if="isUping" :style="{progressWidth+'%'}" >{{progressWidth+"%"}}</cite>
    </zl-button>
    其中input是打开文件资源对话框的控件,type='file', accept是默认可接收的文件格式,也就是默认筛选的文件格式,@change事件是你选择了文件文件,点击打开按钮之后,触发的事件。

    至于为什么一起封装在一个button里面,是为了能显示一个类似加载文件的进度条,这个看需求,可加可不加。

    现在主要来看如何筛选文件。

    其实accept只能筛选默认的文件格式,比如这里,我只是默认筛选.xls,.xlsx,但是如果你选择所有文件,还是能上传别的格式的文件的,如下:

    如果你选择显示所有格式的文件,那其实这个accept就是个摆设而已。

    所有最好还是要在js代码里,手动再筛选,限制一次。

    先上代码:

    其中,获取上传文件的方法有两种:

    1,通过 ref 获取

    2,通过id获取

    然后,获取上传的文件的后缀名,方法也有多种,这里就直接用分割字符串的方式,获取后缀名,然后与允许的文件格式后缀名数组进行比对。

    当然,还有一种方式,可以不需要获取后缀名,直接拿上传文件可接收的文件Media Types(MIME)在accept上做限制。

    常见文件格式MIME对照表如下:

    扩展名 MIME 描述

    *.3gpp audio/3gpp, video/3gpp 3GPP Audio/Video
    *.ac3 audio/ac3 AC3 Audio
    *.asf allpication/vnd.ms-asf Advanced Streaming Format
    *.au audio/basic AU Audio
    *.css text/css Cascading Style Sheets
    *.csv text/csv Comma Separated Values
    *.doc application/msword MS Word Document
    *.dot application/msword MS Word Template
    *.dtd application/xml-dtd Document Type Definition
    *.dwg image/vnd.dwg AutoCAD Drawing Database
    *.dxf image/vnd.dxf AutoCAD Drawing Interchange Format
    *.gif image/gif Graphic Interchange Format
    *.htm text/html HyperText Markup Language
    *.html text/html HyperText Markup Language
    *.jp2 image/jp2 JPEG-2000
    *.jpe image/jpeg JPEG
    *.jpeg image/jpeg JPEG
    *.jpg image/jpeg JPEG
    *.js text/javascript, application/javascript JavaScript
    *.json application/json JavaScript Object Notation
    *.mp2 audio/mpeg, video/mpeg MPEG Audio/Video Stream, Layer II
    *.mp3 audio/mpeg MPEG Audio Stream, Layer III
    *.mp4 audio/mp4, video/mp4 MPEG-4 Audio/Video
    *.mpeg video/mpeg MPEG Video Stream, Layer II
    *.mpg video/mpeg MPEG Video Stream, Layer II
    *.mpp application/vnd.ms-project MS Project Project
    *.ogg application/ogg, audio/ogg Ogg Vorbis
    *.pdf application/pdf Portable Document Format
    *.png image/png Portable Network Graphics
    *.pot application/vnd.ms-powerpoint MS PowerPoint Template
    *.pps application/vnd.ms-powerpoint MS PowerPoint Slideshow
    *.ppt application/vnd.ms-powerpoint MS PowerPoint Presentation
    *.rtf application/rtf, text/rtf Rich Text Format
    *.svf image/vnd.svf Simple Vector Format
    *.tif image/tiff Tagged Image Format File
    *.tiff image/tiff Tagged Image Format File
    *.txt text/plain Plain Text
    *.wdb application/vnd.ms-works MS Works Database
    *.wps application/vnd.ms-works Works Text Document
    *.xhtml application/xhtml+xml Extensible HyperText Markup Language
    *.xlc application/vnd.ms-excel MS Excel Chart
    *.xlm application/vnd.ms-excel MS Excel Macro
    *.xls application/vnd.ms-excel MS Excel Spreadsheet
    *.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet MS Excel Spreadsheetml.sheet
    *.xlt application/vnd.ms-excel MS Excel Template
    *.xlw application/vnd.ms-excel MS Excel Workspace
    *.xml text/xml, application/xml Extensible Markup Language
    *.zip aplication/zip Compressed Archive
    更详细的看这个链接:http://www.iana.org/assignments/media-types/media-types.xhtml

    关于文件大小限制,就相对来说更简单了。

    追后根据后端接口,把文件传给后端就ok了。

    let params = new FormData()
    params.append('file', m.file)
    params.append('name', m.file.name)
    ajax.call(m,url,params,(res,err)=>{
    if(res.status!="200"){
    m.$message.warning(res.data.msg)
    }else{
    m.$message.success("上传成功")
    m.$emit('importDeviceSuccess')
    }
    setTimeout(()=>{
    m.isUping=false
    },2000)
    },m.isRequest, undefined, true)
     

    新鲜刺激的东西永远都有,玩之前掂量掂量自己几斤几两
  • 相关阅读:
    杂记
    [POI2015]PUS
    CF786B Legacy(线段树优化建图)
    SP11470 TTM
    [WC2010]重建计划
    [HNOI2014]世界树
    luogu P4842 城市旅行
    [SDOI2016]征途
    [APIO2014]序列分割
    上下界网络流构图证明
  • 原文地址:https://www.cnblogs.com/banxianer/p/13355553.html
Copyright © 2020-2023  润新知