Compact Framework - 通过 REST 上传文件
Compact Framework - Upload file via REST
我正在寻找通过 REST 将文件从紧凑型框架传输到服务器的最佳方式。我有一个使用 .net Web API 创建的 Web 服务。我看过几个 SO 问题和其他处理发送文件的网站,但 none 似乎可以满足我的需要。
我正在尝试将媒体文件从 WM 6 和 6.5 设备发送到我的 REST 服务。虽然大多数文件小于 300k,但也有少数文件可能为 2-10 兆字节左右。有没有人有一些我可以用来完成这项工作的片段?
谢谢!
我认为这是发送文件的最低要求:
using (var fileStream = File.Open(@"\file.txt", FileMode.Open, FileAccess.Read, FileShare.Read))
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.destination.com/path");
request.Method = "POST"; // or PUT, depending on what the server expects
request.ContentLength = fileStream.Length; // see the note below
using (var requestStream = request.GetRequestStream())
{
int bytes;
byte[] buffer = new byte[1024]; // any reasonable buffer size will do
while ((bytes = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
requestStream.Write(buffer, 0, bytes);
}
}
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
}
}
catch (WebException ex)
{
// failure
}
}
注意:HTTP 需要一种方法来了解您何时 "done" 发送数据。可以通过三种方式实现:
- 设置
request.ContentLength
如示例中所用,因为我们在发送任何内容之前就知道文件的大小
- 设置
request.SendChunked
,以发送包括其各自大小的数据块
- 您 可以 还可以设置
request.AllowWriteStreamBuffering
写入内存缓冲区,但我不建议在紧凑型框架上浪费那么多内存。
我正在寻找通过 REST 将文件从紧凑型框架传输到服务器的最佳方式。我有一个使用 .net Web API 创建的 Web 服务。我看过几个 SO 问题和其他处理发送文件的网站,但 none 似乎可以满足我的需要。
我正在尝试将媒体文件从 WM 6 和 6.5 设备发送到我的 REST 服务。虽然大多数文件小于 300k,但也有少数文件可能为 2-10 兆字节左右。有没有人有一些我可以用来完成这项工作的片段?
谢谢!
我认为这是发送文件的最低要求:
using (var fileStream = File.Open(@"\file.txt", FileMode.Open, FileAccess.Read, FileShare.Read))
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.destination.com/path");
request.Method = "POST"; // or PUT, depending on what the server expects
request.ContentLength = fileStream.Length; // see the note below
using (var requestStream = request.GetRequestStream())
{
int bytes;
byte[] buffer = new byte[1024]; // any reasonable buffer size will do
while ((bytes = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
requestStream.Write(buffer, 0, bytes);
}
}
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
}
}
catch (WebException ex)
{
// failure
}
}
注意:HTTP 需要一种方法来了解您何时 "done" 发送数据。可以通过三种方式实现:
- 设置
request.ContentLength
如示例中所用,因为我们在发送任何内容之前就知道文件的大小 - 设置
request.SendChunked
,以发送包括其各自大小的数据块 - 您 可以 还可以设置
request.AllowWriteStreamBuffering
写入内存缓冲区,但我不建议在紧凑型框架上浪费那么多内存。