首页 > 解决方案 > Sails.js 中使用来自 Vue.js 的sails-hook-uploads 上传多个文件:ETIMEOUT

问题描述

我正在尝试通过补丁将多个文件从我的 Vue 前端上传到我的 Sails 后端。每个产品可能有一个缩略图和多个细节图像。对于来自 Vue 的请求,我设置了一个 FormData 对象,其中包括图像(1 个缩略图,n 个详细图像)

function buildMultipartFormDataObject(data) {
  let formData = new FormData()
  //append text before images
  if(data.thumbnail) formData.append('thumbnail', data.thumbnail)
  if(data.images) {
    for(let i = 0; i < data.images.length; i++) {
      formData.append(`images[${ i }]`, data.images[i])
    }
  }
  return formData
}

在我的风帆控制器中,我正在执行以下操作来上传文件

module.exports = async function update (req, res) {
  // ...
  let productImagesDirname = require('path').resolve(sails.config.appPath, 'assets/images/products/')

  //uploadOne() and upload() are from 'sails-hook-uploads'
  let uploadedThumbnail = await sails.uploadOne(req.file('thumbnail'), { dirname: productImagesDirname })
  let uploadedImages = await sails.upload(req.file('images'), { dirname: productImagesDirname })

我的缩略图正在按预期上传,但对于我得到的图像

错误:EMAXBUFFER:上游 ( images[0]) 在插入接收器之前超时。等待 4500 毫秒后仍未使用。您可以通过更改maxTimeToBuffer选项来配置此超时。

对于每个图像 (image[0] ... image[n]) 和之后

错误:ETIMEOUT:上游 ( images) 等待文件超时。等待 10000 毫秒后没有发送文件。

即使我只想上传图片(在sails&vue 中注释掉缩略图上传)。很明显,Uploadstream 中缺少imagessails?

Upstream的_files字段包含一个流对象req.file('thumbnail')

debug: Upstream {
  _fatalErrors: [],
  _files: [ { stream: [Object], status: 'bufferingOrWriting' } ],

上游的_files字段req.file('images')是空的,但我不明白为什么

debug: Upstream {
  _fatalErrors: [],
  _files: [],

有什么想法吗?

标签: javascriptvue.jsfile-uploadsails.jsmultiple-file-upload

解决方案


推荐阅读