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 写入内存缓冲区,但我不建议在紧凑型框架上浪费那么多内存。