0

我正在使用带有 jQ​​uery 包装器的 v3.9 UI:

现在我已经解决了 IE9 中的“超出最大请求长度”错误(来自此处: FineUploader 错误处理 )。我所有的 FineUploader 代码都在这个其他链接中,我认为我不需要再次发布它。

我现在正在寻找一种更好的方法来让 IE 用户知道他们何时尝试上传过大的文件(Chrome、FF 用户会收到文件过大的警报,所以这不是问题)。我认为我不需要弄乱“消息”选项,因为它们对所有其他浏览器都应该正常工作。IE 不能正常工作!IE 用户将使用他们选择的文件一直到达服务器。为了处理上传超过 fileSize 属性的文件,我在服务器端有代码来检查内容长度 > 'n',如果是,则返回 JSON 成功 = false。见下文:

 [HttpPost]
    public JsonResult UploadFile(HttpPostedFileWrapper qqfile, int surveyInstanceId, int surveyItemResultId, int itemId, int loopingIndex)
    {           
            bool isValid = false;

            // file is too big, throw error.
            if (qqfile.ContentLength > (1024*1024*2.5))
            {
                return CreateJsonResult(false);                    
            }

       More Code here if the file is 'good'
    }

  private JsonResult CreateJsonResult(bool isSuccess)
    {
        var json = new JsonResult();
        json.ContentType = "text/plain";
        json.Data = new { success = isSuccess };
        return json;
    }

这会使基于大小的无效文件上传短路。太好了,但是我可以返回更多的内容,而不是只返回 success=false 并让 FineUploader 使用这个额外的 JSON 值来向用户显示更有用的消息吗?目前所有显示的是“上传失败”。如何引用该无效文件的特定 html 元素,以便添加更具描述性的错误?

另外,我确实有 .on('error') 方法,但我不确定如何触发它。这将是一个逻辑的地方,因为文件上传大小问题是一个错误。帮助?谢谢。

4

1 回答 1

1
  1. 使用请求的 Content-Length 来强制执行文件大小限制不是一个好主意。默认情况下,Fine Uploader 发送的所有上传请求都是多部分编码的。多部分编码请求的 Content-Length 是整个请求的大小,而不仅仅是文件的大小。
  2. 在对您对上一个问题的回答的评论中,我指出了文档的特定部分,该部分允许您控制在 Fine Uploader UI 模式下显示在文件旁边的失败文本。您所要做的就是将选项的mode属性设置failedUploadTextDisplay为“自定义”。在服务器端,返回您希望在 JSON 响应的“错误”属性中显示在失败文件旁边的错误消息文本。有关更多详细信息,请参阅“处理错误”文档部分的底部。

更新

看起来您正在使用返回上传文件大小的ContentLength属性。HttpPostedFileWrapper一开始这让我有点困惑,因为内容长度通常是指请求的大小。恕我直言,此属性的名称选择对于 Microsoft 来说是一个糟糕的名称。因此,您可以忽略我的回答中的#1。

于 2013-10-08T18:36:17.287 回答