我查看了现有的问题,但找不到完全匹配。也许我错过了一些明显的东西,如果是的话 - 请指导我在适当的地方。这是我的问题:WCF服务合同从ExtJs前端接收文件上传
我有ExtJs前端和需要上传二进制数据到WCF后端的应用程序。在前端,我有以下代码(我用Ext.form.field.File控制,让用户选择文件)
// Create a dummy form in the controller after user selected a file
var form = Ext.create('Ext.form.Panel', {
items: [ my_file_field ]
});
form.getForm().submit({
method: 'POST',
url: 'myservice.url',
...
});
在后端我有以下合约:
namespace MyApp
{
[ServiceContract]
public interface ITransferService
{
[OperationContract]
[WebInvoke(UriTemplate = "UploadImage", Method = "POST")]
void SaveImage(Stream buffer);
}
}
它的工作原理“精”,除了一个小东西:在流里面SaveImage()
我得到的不仅是从所选文件的用户的二进制数据,而且一系列的头和编码场:
------WebKitFormBoundary26wAkvwGTnAMELFM
Content-Disposition: form-data; name="ext-gen1654"; filename="photo.png"
Content-Type: application/octet-stream
..... binary data goes here ....
------WebKitFormBoundary26wAkvwGTnAMELFM--
什么是我米伊辛?如何更改服务的合同,以便获得干净的二进制数据?
其他参数以相同的方式编码呢? – sha 2012-06-06 20:52:47
@sha只要这样做:'HttpContext.Current.Request.Form.Get(“myParam”)'。或者,您可以从查询字符串中读取它们:'HttpContext.Current.Request.QueryString.Get(“myParam”)'。 – 2013-12-15 11:01:06