Compact Framework - 通过REST上传文件

时间:2016-08-08 11:26:43

标签: rest compact-framework

我正在寻找通过REST将文件从紧凑框架传输到服务器的最佳方法。我有一个使用.net Web API创建的Web服务。我已经查看过几个涉及发送文件的SO问题和其他网站,但是它们似乎都不能满足我的需求。

我正在尝试将WM 6和6.5设备中的媒体文件发送到我的REST服务。虽然大多数文件少于300k,但奇数少数可能是2-10兆字节。有没有人有一些我可以用来做这项工作的片段?

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为这是发送文件的最低要求:

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需要一种方法来了解您何时完成"发送数据。有三种方法可以实现这一目标:

  • 设置示例中使用的request.ContentLength,因为我们在发送任何内容之前知道文件的大小
  • 设置request.SendChunked,以发送包含各自大小的数据块
  • 可以也设置request.AllowWriteStreamBuffering写入内存缓冲区,但我不建议在紧凑的框架上浪费那么多内存。