我正在寻找通过REST将文件从紧凑的框架传输到服务器的最佳方法。我有一个使用.net web创建的Web服务。我已经看过几个这样的问题和其他处理发送文件的网站,但似乎没有一个能满足我的需要。
我正在尝试将媒体文件从WM 6和6.5设备发送到我的REST服务。虽然大多数文件都不到300 k,但一些奇数可能是2-10兆字节左右。有人有我可以用来做这件事的片段吗?
谢谢!
发布于 2016-08-09 06:30:43
我认为这是发送文件的最低限度:
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设置为写入内存中的缓冲区,但我不建议在紧凑的框架上浪费那么多内存。https://stackoverflow.com/questions/38828034
复制相似问题