Vue+ElementUI实现文件的下载与上传

摘要:
标记可直接用于实现下载功能downloaddownloadhttp是文件下载路径。下载属性用于防止浏览器在未下载的情况下直接打开。文件上传主要使用元素中的el上传。成功时常用。这个钩子是上传成功时的回调。它可以在传输完成后调用单击上载导出默认{data(){return{fileList:[]//此数组存储所有提交的文档信息};},方法:{handleExceed{this.$message.warning;},handlesaccess{//response是后台返回的所有内容,如果{console.log}else{console.log}</script>则更频繁地使用clearFiles方法来清除所有选定的文档信息。

    当需要批量导入的时候,一般会提供下载示例文件的功能。实现下载功能直接使用<a>标签即可。

<a class='download' :href='downloadhttp' download=""  title="下载">下载</a>

downloadhttp为文件下载的路径,download属性是为了避免浏览器直接执行打开而不下载。路径是下载文件很重要的组成部分,一般为了方便维护都会将文件放在服务器,路径需要在apiconfig.js文件中判断是测试端还是服务器端,主要思路是将两端设置不同的baseUrl,在此不再赘述。downloadhttp = baseUrl + 路径相同部分。在Linux服务器上最好将文件名设置为英文,中文在解码时可能会出现偏差,导致文件寻找失败。

   文件的上传主要使用element中的el-upload。

<el-upload
  class="upload-demo"
  action="https://jsonplaceholder.typicode.com/posts/"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :before-remove="beforeRemove"
  multiple
  :limit="3"
  :on-exceed="handleExceed"
  :file-list="fileList">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
      };
    },
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      },
      handleExceed(files, fileList) {
        this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
      },
      beforeRemove(file, fileList) {
        return this.$confirm(`确定移除 ${ file.name }?`);
      }
    }
  }
</script>

其中action是必须的参数,用来写传输的接口地址。用的比较多的是on-success,这个钩子为上传成功时的回调,当传输完成后即可调用。无论后台接口返回何值,只要成功上传,就会调用该函数。但是在实际应用中,由于Excel填写的格式不正确等问题,会导致后台解析失败,返回success = 0.这时我们需要使用该方法来进行后续的操作。

<el-upload
  class="upload-demo"
  action=""
  :on-success='handlesuccess'
  multiple
  :limit="3"
  :on-exceed="handleExceed"
  :file-list="fileList">
  <el-button size="small" type="primary">点击上传</el-button>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: []//此数组中存入所有提交的文档信息
      };
    },
    methods: {
      handleExceed(files, fileList) {
        this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
      },
     handlesuccess(response, file, fileList){
    //response即为后台返回的全部内容
     if(response.success === 1){
       console.log('解析成功')
     }else{
        console.log('解析失败')
       }
     }
    }
  }
</script>

其次使用频率较高的为clearFiles方法,用来清除已选中的所有文档信息。上传时在dialog中进行,当关闭当前dialog,再次打开时需要清空上一次的数据,如果是表格表单类型,可直接将其绑定的数组对象清空,若是文件类型,则需要clearFiles方法来进行清除

免责声明:文章转载自《Vue+ElementUI实现文件的下载与上传》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux命令TOP参数load average详解[转]mac终端下svn常用命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WebUploader.js 上传的几种情况

最近的项目中用到webUploader的地方比较多,总结了几种图片上传的情况。 必要的引用 <link href="http://t.zoukankan.com/~/Scripts/webuploader-0.1.5/webuploader.css" rel="stylesheet" /> <script src="http://t.z...

android如何实现文件按时间先后顺序排列显示

<span style="font-size:18px;">File[] files =parentFile.listFiles(fileFilter);//通过fileFileter过滤器来获取parentFile路径下的想要类型的子文件   ArrayList<FileInfo> fileList = new ArrayLi...

Java实现打包下载BLOB字段中的文件

概述 web项目的文件打包下载实现;servlet接收请求,spring工具类访问数据库及简化大字段内容获取,org.apache.tools.zip打包。 必要提醒:当前总结是继Java实现下载BLOB字段中的文件之后的总结,如有不解之处,请参考之。 核心代码 jdk提供了java.util.zip包,用于实现文件打包的功能,但是对中文名的文件没有很好的...

el-upload 上传携带参数

1、template: <el-upload   class="upload-file-demo"   action="上传的url"   ref="uploadComp"   :auto-upload="false" //禁止自动上传   :show-file-list='true' //显示上传文件名   :file-list="certific...

解决element-ui 中upload组件使用多个时无法绑定对应的元素

问题场景 我们在一个列表中分别都需要有upload组件的时候也就涉及到了多个upload同时存在; 因为一般可以在success回调中拿到上传成功的图片已经成功的response,多个也可以,这个没毛病; 文档如下: !!!但是,当多个同类型的upload同时存在的时候,我在怎么知道回调里面的fileList该与谁关联呢? 例如这种情况 这两个甚至无数...

从零开始的野路子React/Node(9)Antd + multer实现文件上传

最近心血来潮,打算自己捣腾个web app来练练手(虽然大概率会半路弃坑……),其中有一部分是关于文件上传的,在实现的过程中遇到了一些坑,于是打算把血泪教训都记录下来。 前端的部分采用了Antd,不得不说真是香,至少比我司内部的前端库香了1000倍……事半功倍。后端部分则主要通过multer来实现,目测应该是一种比较通用的做法? 1、捯饬前端 首先我们新建...