我尝试创建一个接受多个文件上传的WebService。要将此数据发布到Web服务,请使用RestSharp。
为了这篇文章的目的,我已经删除了代码。
我有我服务的界面:
[ServiceContract]
public interface ISender
{
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
int Upload(Stream fileStream);
}
接口的实现:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Sender : ISender
{
public int Upload(Stream fileStream)
{
FileStream fileToupload = new FileStream(Path.Combine("D:\\FileUpload\\","test.png"), FileMode.Create);
byte[] bytearray = new byte[10000];
int bytesRead, totalBytesRead = 0;
do
{
bytesRead = fileStream.Read(bytearray, 0, bytearray.Length);
totalBytesRead += bytesRead;
} while (bytesRead > 0);
fileToupload.Write(bytearray, 0, bytearray.Length);
fileToupload.Close();
fileToupload.Dispose();
return 1;
}
}
然后使用RestSharp:
调用服务的客户端代码var client = new RestClient("http://myserviceurl/emailsender/Sender.svc");
var request = new RestRequest("Upload", Method.POST) {RequestFormat = DataFormat.Json};
request.AddHeader("Content-Type", "application/octet-stream");
byte[] bytes = File.ReadAllBytes(Server.MapPath("/img/carousel-sprite-160.png"));
request.AddFile("fileStream", bytes, "carousel-sprite-160.png", "image/png");
// execute the request
var response = client.Execute(request);
如果我可以提出两个问题:
1)Upload方法中的fileStream参数始终为null - 为什么?我配置错误了什么?其次,如果.AddFile方法正在创建Stream对象,为什么要添加文件名和mime-type,这些都不是流的一部分(可能是FileStream)。
2).AddFile方法可以在同一个请求对象上多次调用。这表明webservice可以接收多个文件 - 但是webservice如何接收多个文件?我无法使用List<Stream>
,所以我不明白这是怎么回事。
任何人都可以提供的任何指示都将非常感激。
提前感谢您的时间。
此致 dotdev