首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >紧凑框架-通过REST上传文件

紧凑框架-通过REST上传文件
EN

Stack Overflow用户
提问于 2016-08-08 11:26:43
回答 1查看 668关注 0票数 0

我正在寻找通过REST将文件从紧凑的框架传输到服务器的最佳方法。我有一个使用.net web创建的Web服务。我已经看过几个这样的问题和其他处理发送文件的网站,但似乎没有一个能满足我的需要。

我正在尝试将媒体文件从WM 6和6.5设备发送到我的REST服务。虽然大多数文件都不到300 k,但一些奇数可能是2-10兆字节左右。有人有我可以用来做这件事的片段吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 06:30:43

我认为这是发送文件的最低限度:

代码语言:javascript
复制
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设置为写入内存中的缓冲区,但我不建议在紧凑的框架上浪费那么多内存。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38828034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档