2014-09-24 80 views
1

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

Timing in the post of the one that is not uploaded

enter image description here

+0

如果没有至少看到服务器端代码,我们无法真正帮助您。 – mscdex 2014-09-24 13:28:52

+0

它会发生在iOS8上吗?因为目前有一个关于文件上传和FormData的错误。 – jpmorin 2014-09-24 13:45:03

回答

1

我知道了。

我使用与延迟选项服务器端express.multipart“express.multipart({推迟:真})”

正因为如此,有时执行到达了我管理的POST请求的代码

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 =不确定:在express.multipart模块形式的“结束”事件被触发,其中模块设置req.files之前得到用“req.files.file”的形象,只是因为还没有设定...

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

给您的文档“推迟”,在express.multipart模块选项:“推迟处理,并公开了强大的表单对象为req.form * next()被称为无需等待形式的‘

结束’事件。 *例如,如果您需要绑定到“进度”事件,则此选项非常有用。“

相关问题