elementUI 上传文件

2020-06-17  本文已影响0人  LemonTree7

1.vue界面代码

<template>
  <section>
        <el-upload
            class="upload-demo"
            ref="insertUpload"
            :show-file-list="true"
            :auto-upload="false"
            :name="upload.insertUpload.name"
            :action="upload.insertUpload.action"
            :limit="upload.insertUpload.limit"
            :file-list="upload.insertUpload.fileList"
            :multiple="true"
            :data="formData"
            :on-preview="insertUploadOnPreview"
            :on-remove="insertUploadOnRemove"
            :on-success="insertUploadOnSuccess"
            :on-error="insertUploadOnError"
            :on-progress="insertUploadOnProgress"
            :on-change="insertUploadOnChange"
            :before-upload="insertUploadBeforeUpload"
            :before-remove="insertUploadBeforeRemove"
            :http-request="insertUploadHttpRequest">
            <!-- <i class="el-icon-upload"></i> -->
            <!-- <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> -->
            <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
            <div class="el-upload__tip" slot="tip">只能上传图片或pdf文件,文件大小小于20MB</div>
          </el-upload>
  </section>
</template>

<script>

export default {
  name: "MaterialEnclosure",
  methods: {
   insertUploadHttpRequest(param) {
      console.log("params", param);
      const form = new FormData();
      const newFormData = JSON.parse(JSON.stringify(this.formData || {}));
      // ParamsSelect.getAddSelectParams(newFormData, this.planTaskList, {
      //   planTaskBillCode: "billCode",
      //   materialId: "productId",
      // }, {planTaskId: "id"});
      form.append("data", JSON.stringify(newFormData));
      form.append("oauth", this.oauth);
      if (this.formData.id === 0) {
        console.log("fileList", this.upload.insertUpload.fileList);
        if (this.upload.insertUpload.fileList && this.upload.insertUpload.fileList.length>0) {
          this.upload.insertUpload.fileList.map((fileItem) => {
            form.append(this.upload.insertUpload.name, fileItem.raw);
          });
        }
        console.log("form", form);
        // return true;
        // form.append(this.upload.insertUpload.name, param.file);
        // 新增
        this.loading.addLoading = true;
        MaterialEnclosureAPI.insertMaterialEnclosureWithList(form).then(({res, data}) => {
          this.loading.addLoading = false;
          if (res.data.code === 1) {
            this.getMainList();
            this.dialog.formDataVisible = false;
            this.upload.insertUpload = {
              action: iproduceUrl + "materialEnclosure/insertMaterialEnclosureWithList",
              name: "fileList",
              limit: 2,
              headers: {'Access-Control-Allow-Methods': 'POST'},
              fileList: [],
              data: {},
              file: {},
              reUpload: false,
              reviseFlag: false
            };
          } else {
            this.$message({
              message: data.msg || "提交失败!",
              type: 'error'
            });
          }
        });
      } else {
        console.log("fileList", this.upload.insertUpload.fileList);
        if (this.upload.insertUpload.fileList && this.upload.insertUpload.fileList.length>0) {
          this.upload.insertUpload.fileList.map((fileItem) => {
            form.append(this.upload.insertUpload.name, param.file);
          });
        }

        // if (param.file) {
        //   form.append(this.upload.insertUpload.name, param.file);
        // }
        //  上传到接口
      }
    },
    insertUploadOnPreview(file) {
      console.log("insertUploadOnPreview", file);
    },
    insertUploadOnRemove(file, fileList) {
      console.log("insertUploadOnRemove", file, fileList);
      this.upload.insertUpload = {
        action: iproduceUrl + "materialEnclosure/insertMaterialEnclosureWithList",
        name: "fileList",
        limit: 2,
        headers: {'Access-Control-Allow-Methods': 'POST'},
        fileList: fileList,
        data: {},
        file: file,
        reUpload: false,
        reviseFlag: false
      };
    },
    insertUploadOnSuccess(response, file, fileList) {
      console.log("insertUploadOnSuccess", response, file, fileList);
    },
    insertUploadOnError(err, file, fileList) {
      console.log("insertUploadOnError", err, file, fileList);
    },
    insertUploadOnProgress(event, file, fileList) {
      console.log("insertUploadOnProgress", event, file, fileList);
    },
    insertUploadOnChange(file, fileList) {
      console.log("insertUploadOnChange", file, fileList);
      if (checkSuffix(file.name, "pdf,jpg,png,jpeg,tga,tif,svg,esp,exr")) {
        console.log("上传成功!");
        this.upload.insertUpload.file = file;
        // 多文件上传
        this.upload.insertUpload.fileList = fileList; //[file];
        return true;
      } else {
        this.upload.insertUpload.file = {};
        this.upload.insertUpload.fileList = [];
        console.log("请上传doc或者pdf文档")
        this.$message({
          message: "请上传doc或者pdf文档",
          type: "error"
        });
        return false;
      }
    },
    insertUploadBeforeUpload(file) {
      console.log("insertUploadBeforeUpload", file);
    },
    insertUploadBeforeRemove(file, fileList) {
      this.upload.insertUpload.file = file;
        // 多文件上传
      this.upload.insertUpload.fileList = fileList; //[file];
      console.log("insertUploadBeforeRemove", file, fileList);
    },
 },
data() {
    return {
       upload: {
        insertUpload: {
          action: iproduceUrl + "materialEnclosure/insertMaterialEnclosureWithList",
          name: "fileList",
          limit: 2,
          headers: {'Access-Control-Allow-Methods': 'POST'},
          fileList: [],
          data: {},
          file: {},
          reUpload: false,
          reviseFlag: false
        }
      },
    };
  }
};
</script>

2.接口代码

头文件设置,使用原生的axios,头文件:{headers: {"Content-Type": "multipart/form-data"}}

Object.assign(IPRODUCE.materialEnclosure, {
  insertMaterialEnclosureWithList: (params) => axios.post(iproduceUrl + "materialEnclosure/insertMaterialEnclosureWithList", params, {headers: {"Content-Type": "multipart/form-data"}})
});

上一篇下一篇

猜你喜欢

热点阅读