在WCF服务中,有一种上传图像文件的方法:
UploadImage(Stream imageData);
编辑 - 正如答案所示,下一行是错误的,这是可能的!
在使用Stream时,此方法不允许使用其他参数,但需要这些参数。
我知道有一些开源项目可以处理多部分流,我可以传递更多参数,但是我们认为请求标头可能是一个更简单的解决方案。
所以我想知道在这种情况下使用“请求标头”方法可能有什么缺点?
谢谢!
答案 0 :(得分:2)
在使用Stream时,此方法不允许使用其他参数,但需要这些参数。
不是真的。这应该有用。
[OperationContract,WebInvoke(UriTemplate="{name}")]
UploadImage(Stream imageData, string name);
这是一个工作样本
async void TestMethod()
{
Task.Run(() =>
{
var host = new WebServiceHost(typeof(MyContract), new Uri("http://0.0.0.0:8088/Test"));
host.Open();
});
await Task.Delay(2000);
new Webclient().UploadData("http://localhost:8088/Test/UploadImage/abc.bmp", new byte[] { 65, 66, 67, 68, 69 });
}
[ServiceContract]
class MyContract
{
[OperationContract, WebInvoke(UriTemplate = "/UploadImage/{name}")]
public void UploadImage(Stream s, string name)
{
Console.WriteLine(name + " -> " + new StreamReader(s).ReadToEnd());
}
}