【问题标题】:ExtJS File upload response?ExtJS 文件上传响应?
【发布时间】:2014-02-20 20:14:53
【问题描述】:

我正在尝试通过 Web 界面验证某些文件的内容,并使用响应来启用/禁用某些其他功能……例如保存按钮。我已经完成了提交和文件处理(存根),但我似乎无法让我的响应正常工作。

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

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":[]}}}

有什么想法吗?

【问题讨论】:

  • 你能用 Firebug 检查确切的响应,并告诉我们它说什么。响应标头上的 Content-Type 设置是否正确?响应的具体内容是什么?

标签: java file-upload extjs httpresponse


【解决方案1】:

好吧,我没有正确设置响应头

 response.setContentType("application/json");

还不够。

        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);

工作正常。

【讨论】:

    【解决方案2】:

    我只想将响应传递给 要处理的成功函数。

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

    【讨论】:

    • 是的。我的意思是成功函数没有被命中,因为响​​应头类型设置不正确。
    【解决方案3】:

    服务器响应类型应为“text/html”。 asp.net mvc 结果:

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

    现场演示是here

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 2012-10-30
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2015-07-21
      • 2013-01-04
      相关资源
      最近更新 更多