我查看了現有的問題,但找不到完全匹配。也許我錯過了一些明顯的東西,如果是的話 - 請指導我在適當的地方。這是我的問題: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