【问题标题】:Uploading file Angular.js FormData上传文件 Angular.js FormData
【发布时间】:2014-09-24 22:17:42
【问题描述】:

我正在将带有 Angular 的文件上传到我的节点服务器。有时图像没有上传,我在服务器端得到 req.files “未定义”,我不知道为什么。我认为这与图像的重量无关:上传的图像大约为 48KB,而不是 16KB。我附上了两个快照,以显示一个有效的和另一个(Chrome 开发人员工具的网络选项卡)之间的时间差异(http post)。我可以看到“时间”(“阻塞”、“发送”)并没有与失败的时间重叠。也许是这个问题...但我不确定如何解决它。

【问题讨论】:

  • 如果不查看您的服务器端代码,我们将无法真正帮助您。
  • 会不会正好在iOS8上?因为目前有一个关于文件上传和FormData的错误。

标签: javascript node.js angularjs


【解决方案1】:

我明白了。

我在服务器端使用 express.multipart 和延迟选项“express.multipart({defer: true})”

因此,有时执行到达我管理发布请求的代码,以在 express.multipart 模块中的表单的“end”事件在模块设置 req 的地方触发之前获取带有“req.files.file”的图像。文件:

form.on('end', function(){ if (done) return; try { req.body = qs.parse(data); **req.files = qs.parse(files);** if (!options.defer) next(); } catch (err) { form.emit('error', err); } });

所以有时候req.files.file = undefined,只是因为还没有设置……

去掉 {defer: true} 选项解决了我的问题。与一张或另一张图片无关。

这里是 express.multipart 模块中“defers”选项的文档:

"延迟处理并将 Formidable 表单对象公开为req.form。 * next() 在不等待表单的“结束”事件的情况下被调用。 * 例如,如果您需要绑定到“进度”事件,此选项很有用。”

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2017-08-30
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多