2013-10-08 36 views
0

我使用V3.9 UI使用jQuery包装:处理IE浏览器,它不处理档案大小等

现在,我已经内IE9解决了我的“超过最大请求长度”的错误(从这里开始: FineUploader Error Handling )。我所有的FineUploader代码都在这个其他链接中,并不认为我需要再次发布它。

我现在正在寻找一种更好的方式,让IE用户知道他们何时试图上传过大的文件(Chrome,FF用户会收到太大的文件警报,所以这不是问题) 。我不认为我需要混淆'消息'选项,因为这些选项适用于所有其他浏览器。它的IE不能正常工作! IE用户将使用他们选择的文件一直到达服务器。为了处理上传超过fileSize属性的文件,我在我的服务器端检查了内容长度>'n'的代码,如果是,则返回JSON success = 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('错误')方法,但我不知道如何触发此。这将是一个看起来很合理的地方,因为文件上传大小问题是一个错误。帮帮我?谢谢。

回答

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

UPDATE

看起来你正在使用它返回上传文件的大小HttpPostedFileWrapperContentLength财产。起初,这对我来说有点困惑,因为内容长度通常指的是请求的大小。这个属性的名称是微软方面的一个不好的名称,恕我直言。所以,你可以在我的答案中忽略#1。