http上传文件

311 阅读1分钟

1 http协议上传文件

                const formData = new FormData();
                formData.append('file', params.file);
                this.$axios({
                    method: 'post',
                    url: url, // 请求地址
                    data: formData,
                    headers: {
                        'Content-Type': 'multipart/form-data'
                    },
                }).then(data => {

支持上传多个文件,以及附带其它参数, 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;

由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件

2 binary

相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。

参考地址 blog.csdn.net/qq_33706382…

下载文件

 this.$axios({
          method: 'get',
          url: url, // 请求地址
          headers: {
            'Content-Type': 'multipart/form-data'
          },
          responseType: 'blob' // 表明返回服务器返回的数据类型
        }).then(data => {
          const content = data.data;
          const blob = new Blob([content])
          const fileName = '模版.xlsx'
          if ('download' in document.createElement('a')) { // 非IE下载
            const elink = document.createElement('a')
            elink.download = fileName
            elink.style.display = 'none'
            elink.href = URL.createObjectURL(blob)
            document.body.appendChild(elink)
            elink.click()
            URL.revokeObjectURL(elink.href) // 释放URL 对象
            document.body.removeChild(elink)
          } else { // IE10+下载
            navigator.msSaveBlob(blob, fileName)
          }