防止在Opera Mini上上传大文件

时间:2015-01-21 13:54:04

标签: javascript nginx form-submit opera-mini

我遇到了一个非常有趣的问题。我们已经从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

检查文件的大小?

1 个答案:

答案 0 :(得分:1)

document.getElementById("opera-input").files是一个文件API。

Opera Mini中的文件API为not enabled

简单fiddle来检查。

最好检查服务器上的文件大小,并在响应html中添加有关文件大小的错误。