0

我正在尝试以异步方式上传文件。我目前正在使用 jquery.form 插件并使用 ajaxSubmit 方法。后端包括获取此上传的文档并将其插入文档库。那部分没有问题。现在,当我尝试上传时,我收到 404 bad request 错误。Web 服务需要来自请求的 JSON。我注意到情况并非如此,因为在请求有效负载中我得到如下内容。

    Content-Disposition: form-data; name="file"; filename="Json45r11 (1).zip"

这不是 JSON,所以我认为这就是我收到错误请求的原因。后端方法的Webservice定义是这样的:

              [OperationContract]
              [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest , ResponseFormat = WebMessageFormat.Json)]
              SuccessUpload uploadDoc(string id);

前端提交如下所示:

      $('#form').ajaxSubmit({url: 'backend Method', type: 'post',data: JSON.stringify({id:1})});

这一切有解决方法吗?任何帮助表示赞赏,如果英语不好而不是母语,对不起。

4

2 回答 2

3

jQuery.form 插件multipart/form-data在上传经典 ASMX Web 服务无法理解的文件时使用编码请求。您可以使用通用 ASHX 处理程序 ( ) 替换您的 Web 服务,IHttpHandler这将允许您处理任何请求格式。或者如果你不想像处理程序那样低级,你可以使用一些新的框架,比如 ASP.NET MVC、ASP.NET WEB API、WCF、ServiceStack 等等。multipart/form-data编码请求。

于 2013-02-05T21:57:02.077 回答
2

由于 web 服务需要 JSON,因此在方法的声明中只需说明它接收 STREAM 类型的对象。

这应该工作:

  [OperationContract]
    SuccessUpload uploadDoc2(Stream data);
于 2013-02-05T22:07:16.093 回答