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/...