让我们假设下载所选文件的 Controller :
public FileResult Download( string f ) {
Stream file = MyModel.DownloadFiles( f );
return File( file, "application/octet-stream", (file as FileStream).Name );
}
和MyModel包含
public static Stream DownloadFiles(string file){
return new FileStream(file, FileMode.Open, FileAccess.Read);
}
如果我在 Controller 中使用 using
关键字,则会抛出异常:无法访问已关闭的文件
。
好吧,我想确定下载的文件是否会被处理(我不知道是否可能,如何处理)?
谢谢
最佳答案
Controller.File 方法在内部使用FileStreamResult 类,该类已经包含using 关键字
protected override void WriteFile(HttpResponseBase response) {
// grab chunks of data and write to the output stream
Stream outputStream = response.OutputStream;
using (FileStream) {
byte[] buffer = new byte[_bufferSize];
while (true) {
int bytesRead = FileStream.Read(buffer, 0, _bufferSize);
if (bytesRead == 0) {
// no more data
break;
}
outputStream.Write(buffer, 0, bytesRead);
}
}
}
关于c# - 在 Controller (ASP.NET MVC 3)中作为流下载的文件会自动处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13265392/