如何上传文件,处理文件并将结果文件在单个请求中返回到REST WCF服务?

时间:2011-01-17 09:49:18

标签: .net wcf web-services rest

我需要在WCF中实现的REST服务中实现以下场景:

  • 用户提交二进制文件和一组参数
  • 服务器使用该文件,做一些聪明的工作并生成二进制输出文件
  • 用户检索该二进制结果文件

所有这些都是从客户的角度在单个操作中完成的。

It's pretty easy in a non-REST service。我如何在REST服务中执行此操作?我从哪里开始?

2 个答案:

答案 0 :(得分:0)

棘手的部分是XMLHttpRequest对象不支持文件上传。 因此,常见的解决方法是使用Flash或其他插件上传文件。或者使用IFrame上传文件。

例如,有许多插件可以自动执行此过程 http://jquery.malsup.com/form/#file-upload

服务器部分并不困难。

您的Request将包含Files属性,其中包含已上传的文件。保存文件,并在响应中返回您想要的任何内容。

查看上述插件中的示例,以便在客户端处理响应。

答案 1 :(得分:0)

由于您的链接问题不是直接通过HTTP进行流式传输,您当然可以在REST服务中发送字节数组。这是服务合同的例子:

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebInvoke(Method = "POST")]
    byte[] GetByteData(byte[] data);
}

数据将作为base64编码的字符串发送。发送消息的示例:

<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">QmFzZSA2NCBTdHJlYW0=</base64Binary>