【发布时间】:2016-03-03 22:14:05
【问题描述】:
我是一名初级程序员,试图从 API 获取 mp4 视频并将它们保存到网络上的文件夹中。我正在使用以下代码;
public static void saveVideos(HttpContent content, String filename, bool overwrite)
{
string pathName = Path.GetFullPath(filename);
using (FileStream fs = new FileStream(pathName, FileMode.Create, FileAccess.Write, FileShare.None))
{
if (fs.CanWrite)
{
byte[] buffer = Encoding.UTF8.GetBytes(content.ToString());
fs.Write(buffer, 0, buffer.Length);
fs.Flush();
fs.Close();
}
}
}
代码编译不会出错,但所有视频都会写入大小为 1KB 的文件夹。我似乎无法弄清楚为什么我没有得到所有文件。
当我检查内容的价值时,我看到的数据如下所示:
Headers = {Content-Length: 240634544
Content-Disposition: attachment; filename=Orders.dat
Content-Type: application/x-www-form-urlencoded; charset=utf-8
谁能在这里指出我的错误?
谢谢
【问题讨论】:
-
HttpContent.ToString()不返回其内容。您可以使用CopyToAsync或ReadAsStreamAsync或ReadAsStringAsync方法。文档在这里:msdn.microsoft.com/en-us/library/… -
if (fs.CanWrite) 完全没用。您打开它进行写入,很明显它
CanWrite和Flush()和Close()也无用...您正在使用using模式,因此您不必手动Flush()和@987654333 @ -
@DatVM 作为字符串读取在这里没有意义,因为他正在下载一个二进制文件的视频文件。使用
ReadAsByteArrayAsync(或您提到的CopyToAsync)是可行的方法。 -
@PhilK 是的,你说得对,我忘了。
标签: c# filestream