为了让你更好地理解,我正在尝试进行一次批量下载许多附件的操作。通常情况下,这些附件需要逐个通过网站下载,并且检索附件的MVC控制器代码大致如下:
var attachment = _attachmentsRepository.GetAttachment(websiteId, id);
if (attachment.FileStream == null || !attachment.FileStream.CanRead)
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
var content = new StreamContent(attachment.FileStream);
content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = $"{id}.{attachment.Extension}" };
return new HttpResponseMessage(HttpStatusCode.OK) { Content = content };
我想要做的是编写一个控制台应用程序来进行大量操作,将每个文件直接保存到磁盘上。目前我已经实现了单个文件的保存:
var = attachment attachmentsRepository.GetAttachment(websiteId, resource.Id);
attachment.FileStream.Position = 0;
var reader = new StreamReader(attachment.FileStream);
var content = reader.ReadToEnd();
File.WriteAllText(someFilePath, content);
我避开了任何http特定的框架类,因为我只需要通过代码直接下载到文件而不是通过浏览器。这段代码成功生成文件,但当我打开它们时,Excel会指示它们已损坏,我怀疑这是一个编码问题。目前我正在尝试更改编码,但迄今为止没有什么运气,因此非常感谢任何帮助。