2013-02-05 54 views
0

我想以异步的方式上传文件。我目前使用jquery.form插件并使用ajaxSubmit方法。后端包含获取此上传的文档并将其插入到文档库中。这部分没有问题。现在,当我尝试进行上传时,出现404错误请求错误。 webservice期望来自请求的JSON。我注意到情况并非如此,因为在请求有效载荷中,我得到如下内容。Webservice期待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})}); 

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

+0

你的英语好 –

回答

2

由于webservice需要一个JSON,所以在你的方法的声明中只需要说明它接收到一个STREAM类型的对象。

这应该工作:

[OperationContract] 
    SuccessUpload uploadDoc2(Stream data); 
+0

谢谢!这工作完美。 – rdk1992

3

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

+0

的asp.net网页API是非常好的,第一.NET框架我真正享受发展中 –

+1

服务我要说的ServiceStack相同。与ASP.NET Web API相比,我更喜欢它。 –

+0

所以我听说过,今天晚上我预见了一个小小的研究项目好玩 –