我将nginx设置为将文件上传大小限制为2MB,并设置了允许相同大小的快捷设置:
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字符串组成,我需要解析这个字符串来确定错误是什么。显然我不想那样做。
对于为什么不使用错误对象,有什么建议或解释吗?
发布于 2014-04-09 01:00:55
我怀疑问题在于Nginx在您的Express代码之前发现了错误,这就是为什么您看到的是Nginx错误页面而不是Express响应。
尝试使nginx中的值稍微高一点(比如3M),然后再次重新启动服务器。
https://stackoverflow.com/questions/22947084
复制相似问题