美文网首页
关于文件上传

关于文件上传

作者: 北暖37 | 来源:发表于2019-10-31 21:37 被阅读0次

之前的文件上传,基本都是上传到阿里云,然后拿到具体的链接给到后台,但是最近,要求直接传文件给后台,实现数据的传输.
框架是vue+elementUI,使用的是el-upload组件进行上传

<el-upload
            drag
            v-model="fromData.file"
            class="upload-demo"
            action="#"
            accept=".xls,.xlsx,.csv"
            :auto-upload="false"
            :before-upload="onBeforeUpload"
            :on-change="handleChange">
            <i class="el-icon-upload2 upload-img-style"></i>
            <div class="el-upload__text dis-line">点击此处上传</div>
          </el-upload>

handleChange (file, fileList) {
      console.log(file, 11111)
      let reader = new FileReader()
      reader.readAsDataURL(file.raw)
      reader.onload = () => {
          this.fromData.file = reader.result
      }
      if (fileList.length > 1) {
        fileList.shift(0)
      }
    }

这个时候,上传文件,获取到的file内容如下截图展示


图1

这个时候感觉这样不能直接给后端,然后后端说用formdata格式上传,就把取得的file.row利用FileReader转换成类似图片的base64的字符串格式上传给后台,同时ajax数据请求也改成了对应的formdata的格式

let formData = new FormData()
      formData.append('feeCode', data.feeCode)
      formData.append('file', data.file)
      formData.append('ownRun', data.ownRun)
      data = formData

这个时候,后台依然提示传的格式不正确,然后进行了对比,发现唯一的区别就是上传的file的格式,不一样,如图所示,可见,上传的样式有问题,


图2

然后又看了一下,把获取到的file.row的值,不进行任何修改,File格式直接传送给后台

handleChange (file, fileList) {
      this.fromData.file = file.raw
      if (fileList.length > 1) {
        fileList.shift(0)
      }
    }

此时文件的格式如图


图3

此时,完成了文件的直传

相关文章

网友评论

      本文标题:关于文件上传

      本文链接:https://www.haomeiwen.com/subject/tprtbctx.html