我遇到了一个非常有趣的问题。我们已经从 Apache 切换到 Nginx,并且我们有一个文件上传功能,这在 Nginx 中出现了问题。如果要上传的文件太大,则会显示错误消息:
413请求实体太大
nginx/1.4.6 (Ubuntu)
这是因为我们对文件大小有限制,我们不接受服务器上大于 2 MB 的文件。但是,这不是一个用户友好的错误,因此我们希望隐藏技术细节并以用户友好的方式通知用户。我已经实现了一个适用于任何浏览器的功能,除了 Opera Mini。我会从中取出一些细节,因为它们与问题无关:
if (isOperaMini()) {
$("#opera-mini-photo-form").submit(function(e) {
if (document.getElementById("opera-input").files[0].size >= 1048576) {
e.preventDefault();
alert"Invalid or too large file");
}
});
} else {
//some code for other browsers
}
如果浏览器是 Opera Mini,那么submit
事件里面的 if 会一直存在false
,并且form
会一直提交。我检查了在其他浏览器中为 Opera Mini 编写的代码,看看是否有错误实现。在其他浏览器中它工作。我试图在 Opera Mini 中提醒以下值:
document.getElementById("opera-input").files[0].size
alert
没有发生。现在,如果我们考虑到 Opera Mini 使用 Opera 代理来浏览网页这一事实,我想知道 Javascript 是否真的在代理服务器上运行。如果是这种情况,它将解释为什么我无法检查文件大小。如果没有,那么我不知道是什么导致了这个问题。我应该用什么代替
document.getElementById("opera-input").files[0].size
检查文件的大小?