WCF 服务合约接收来自 ExtJs 前端的文件上传

标签 wcf extjs file-upload upload extjs4

我查看了现有问题,但找不到完全匹配的问题。也许我遗漏了一些明显的东西,如果是这样 - 请引导我到正确的地方。这是我的问题:

我有 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',
  ...
});

在后端我有以下契约(Contract):

namespace MyApp
{
    [ServiceContract]
    public interface ITransferService
    {
        [OperationContract]
        [WebInvoke(UriTemplate = "UploadImage", Method = "POST")]
        void SaveImage(Stream buffer);
    }

}

它工作得“很好”,除了一件小事:在 SaveImage() 内部的流中,我不仅从用户选择的文件中获得二进制数据,而且还获得一堆 header 和编码字段:

------WebKitFormBoundary26wAkvwGTnAMELFM
Content-Disposition: form-data; name="ext-gen1654"; filename="photo.png"
Content-Type: application/octet-stream
..... binary data goes here .... 
------WebKitFormBoundary26wAkvwGTnAMELFM--

我错过了什么?如何更改服务契约(Contract)以便获得干净的二进制数据?

最佳答案

我找到了这篇文章:http://antscode.blogspot.com/2009/11/parsing-multipart-form-data-in-wcf.html

有人知道更简单的解决方案吗?并不是说建议的解析逻辑很复杂,但我的印象是这是一项常见任务,应该有更简单的方法来完成它。我不敢相信 MSFT 无法理解 WCF 中开箱即用的标准网页 POST...

关于WCF 服务合约接收来自 ExtJs 前端的文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209646/

相关文章:

c# - 为什么 BasicHttpBinding 不需要主体名称就可以在 IIS7 上使用 Kerberos Auth?

ios - Xamarin - WCF 异步回调中的异常处理不起作用 - 应用程序崩溃

javascript - 如何动态更改悬停和按下的 extjs 按钮的背景

php - ext js 存储/模型示例 .net - 将 php/mysql 转换为 .netwebservier/sql

javascript - Extjs 6 - 树正在 chop 我的 <p>

javascript - 如何使用 FormData 进行 AJAX 文件上传?

java - 在没有 Web 界面的情况下使用 Java 将文件上传到 Google App Engine

c# - 在 Windows 7 上托管 WCF 服务时需要不同的 URL

c# - 使用 WCF 服务时发生 Java 错误

java - 我们如何接受多部分的请求主体?