【发布时间】:2014-04-09 09:00:55
【问题描述】:
我已将 nginx 设置为将文件上传大小限制为 2MB,并已将 express 设置为允许相同的大小:
nginx:
server {
client_max_body_size 2M;
}
快递:
app.use(express.limit('2mb'));
在我的文件上传处理程序中,我记录了我得到的错误,并且有一次我得到了一个对象,它给了我状态代码和更多有用的信息。重新启动服务器后,我突然停止获取该错误对象,现在在其位置上获取了一串 HTML。
HTML 是您希望在 nginx 屏幕上看到的输出:
<html>
<head><title>413 Request Entity Too Large</title></head>
<body bgcolor="white">
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nginx/1.4.4</center>
</body>
</html>
这是为什么?如何确保我只返回一个错误对象而不是这个不太有用的字符串?
发送响应的回调是:
callbacks.uploadFailure = function(err){
res.send(413, err);
};
我也尝试过返回 json:
callbacks.uploadFailure = function(err){
res.json(413, err);
};
在我可以做类似的事情之前:
if(err.error.status === 413) {$scope.errmsg = 'File upload too large.'}
但现在我不能这样做,因为 err 仅包含上面列出的 html 字符串,我需要解析这个字符串以确定错误是什么。显然我不想那样做。
关于为什么我没有得到错误对象的任何建议或解释?
【问题讨论】:
-
我怀疑问题是 Nginx 在您的 Express 代码之前发现了错误。尝试将 nginx 中的值调高一点(比如 3M),然后重新启动服务器。
-
就是这样。我想我可以将 nginx 设置为一个非常高的值,然后输入一些代码来处理它作为边缘情况。赫克托,这是一个正确的答案,我可以接受。谢谢!