乐趣区

关于node.js:getFileStream-获取不到自定义字段

Eggjs 应用 ctx.getFileStream 进行文件上传

最近在应用 eggjs 上传文件时,无奈获取到前端定义的字段,始终为空,在此记录一下

前端代码

handleRequest(param) {
      let fileObj = param.file;
      // FormData 对象
      let form = new FormData();
      // 文件对象
      form.append('bizId', this.apartment.id);
      form.append('bizType', '1');
      form.append('file', fileObj);  // 留神这个中央挪动要放 append 到最初面
  
      fileApi.uploadSave(form).then((res) => {//...})
    },

后端

// 应用了案例云的 OSS 
async ossStreamSave() {const { ctx} = this;
    try {// ★★★★★ 提醒,前端 formData.append(‘filename’, file) 必须放到最初,否则 ctx.getFileStream() 取流实现时 stream.fields 依然是空的
      let stream;
      stream = await ctx.getFileStream();
      const params = {
        bizId: stream.fields.bizId,
        bizType: stream.fields.bizType,
        url: '',
        submittedFileName: stream.filename,
        contextType: stream.mimeType,
        ext: stream.filename.split('.')[1],
      };
      
      const uid = UUID.v4();
      const name = 'tks/' + path.basename(`${uid}.${params.ext}`);
      const result = await client.put(name, stream);
        
      params.url = result.url;
      const res = await ctx.model.TksFile.create(params);
      return res;

    } catch (err) {return false;}
  }

参考:https://blog.csdn.net/qq_3615…

​ https://github.com/eggjs/egg/…

退出移动版