2011-03-30 69 views
4

我想通过网络界面验证一些文件的内容,并使用响应来启用/禁用一些其他功能......就像保存按钮一样。尽管提交和文件处理(存根),但我似乎无法让我的回应正常工作。ExtJS文件上传响应?

问题:响应尝试让用户用响应内容下载文件。我只想将响应传递给要处理的成功函数。

JS功能代码:

function validateCopybook() { 
     //submit values. 
     console.log("validating"); 
     if (this.getForm().isValid()) { 
      this.getForm().submit({ 
      url : 'batch/validateCopybook.json', 
      waitMsg : 'Validating...', 
      success : function(form, action) { 
       this.msg('Success', 'Processed file on the server'); 


       } 
      }); 
     } 
    } 

服务器端代码:

public ModelAndView validateCopybook(HttpServletRequest request, HttpServletResponse response) throws Exception 
{ 
    // Check whether we're dealing with a multipart request 
    String contentHeader = request.getHeader("content-type"); 
    boolean isMultipart = (contentHeader != null && contentHeader.indexOf("multipart/form-data") != -1); 

    if (isMultipart == false) 
    { 
     return Helper.errorResponse("not multipart"); 
    } 
    else 
    { 
     DefaultMultipartHttpServletRequest reqM = (DefaultMultipartHttpServletRequest) request; 
     MultiValueMap<String, MultipartFile> fileMap = reqM.getMultiFileMap(); 
     MultipartFile copyIn = fileMap.get("copy-path-in").get(0); 
     MultipartFile copyOut = fileMap.get("copy-path-out").get(0); 
    } 

    System.out.println(response.getContentType()); 
    response.setContentType("application/json"); 

    ModelAndView mav = Helper.successResponse("success"); 
    return mav; 
} 

响应返回:

ModelAndView: reference to view with name 'json'; model is {model={data={"success":true,"info":"success","dataLength":0,"data":[]}}} 

任何想法?

+0

你能检查与萤火虫的确切回复,并让我们知道它说。内容类型集在响应头上是否正确?答案的确切内容是什么? – Tommi 2011-03-30 11:54:46

回答

3

确定我不是设置响应报头正确

response.setContentType("application/json"); 

wasnt足够。

 MappingJacksonJsonView view = new MappingJacksonJsonView(); 
    view.setContentType("text/html"); 
    Map<String, Object> responseMap = new HashMap<String, Object>(); 
    responseMap.put("success", true); 
    ModelAndView mav = new ModelAndView(view, responseMap); 

工作正常。

0

我想只通过回应 成功函数来处理。

您的成功功能已经有服务器的响应!成功函数中的action参数包含您的响应的详细信息。您可以通过action.result.variablename访问响应。

+0

是的。我的观点是成功函数没有被击中,因为响​​应头类型没有正确设置。 – MikePatel 2011-03-30 13:29:57

0

服务器响应类型应该是“text/html”。 asp.net的MVC结果:

return Json(new 
{ 
    success = true, 
    msg = "Your file has been uploaded", 
    data = new 
     { 
      name, size 
     } 
}, "text/html"); 

现场演示是here