gpt4 book ai didi

javascript - 上传文件 Angular.js FormData

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:19 27 4
gpt4 key购买 nike

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

Timing in the post of the one that is not uploaded

enter image description here

最佳答案

我明白了。

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

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

form.on('end', function(){
如果(完成)返回;
尝试 {
req.body = qs.parse(data);
**req.files = qs.parse(files);**
if (!options.defer) next();
} 捕获(错误){
form.emit('错误', err);
}
});

所以有时 req.files.file = undefined,只是因为尚未设置...

摆脱 {defer: true} 选项解决了我的问题。与一张或另一张图像无关。

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

“推迟处理并将 Formidable 表单对象公开为 req.form。 * next() 的调用无需等待表单的“end”事件。 * 例如,如果您需要绑定(bind)到“进度”事件,则此选项非常有用。”

关于javascript - 上传文件 Angular.js FormData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26015246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com