我正在尝试编写 REST Web 服务,通过该服务我们的客户可以将文件上传到我们的文件服务器上。是否有示例或任何有用的链接可供我引用以获取指导?
我还没有看到很多使用 ADO.NET 数据服务进行 POST 操作的示例。
最佳答案
我已使用 POST 将文件上传到 ADO.NET 数据服务,但我不确定这是否是推荐的方法。我的做法是:
在数据服务上,我实现了一个名为 UploadFile 的服务操作(使用 WebInvoke 属性,以便满足 POST 调用):
[WebInvoke]
public void UploadFile()
{
var request = HttpContext.Current.Request;
for (int i = 0; i < request.Files.Count; i++)
{
var file = request.Files[i];
var inputValues = new byte[file.ContentLength];
using (var requestStream = file.InputStream)
{
requestStream.Read(inputValues, 0, file.ContentLength);
}
File.WriteAllBytes(@"c:\temp\" + file.FileName, inputValues);
}
}
然后在客户端,我使用以下方式调用数据服务:
var urlString = "http://localhost/TestDataServicePost/CustomDataService.svc/UploadFile";
var webClient = new WebClient();
webClient.UploadFile(urlString, "POST", @"C:\temp\test.txt");
这使用 WebClient 上传文件,将文件数据放入 HttpRequest.Files 集合中并设置内容类型。如果您希望自己发送文件内容(例如,从 Asp FileUpload 控件)而不是让 webClient 使用文件路径读取文件,则可以使用类似于 this 中的 WebRequest。邮政。虽然不是使用
FileStream fileStream = new FileStream(uploadfile,
FileMode.Open, FileAccess.Read);
您可以使用传入的字节数组。
我希望这会有所帮助。
关于ADO.NET 数据服务 - 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702717/