ADO.NET 数据服务 - 上传文件

标签 ado.net wcf-data-services astoria

我正在尝试编写 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/

相关文章:

c# - LINQ to Entities 与 ADO.Net

c# - 如果我不处置我的 IDataReader,我的连接是否会返回到池中?

c# - 带有 WCF DataService 的 OData - 添加自定义查询选项

ado.net - 如何在 Excel 中使用 ADO.NET 托管提供程序?

c# - 有没有办法在 OData 中说 "Expand Everything"?

c# - wcf 类库中的 WCF 数据服务(让客户端通过该服务与数据库对话)

wcf - 使用 REST WCF 数据服务作为 SQL 报告服务的数据源

wcf-data-services - 如何以编程方式配置 WCF 数据服务?

C# 解析问题