0

我有一个应用程序,我必须在其中上传文件,并且可以选择下载这些文件。当我上传文件时,它可以正常工作,但问题在于下载选项。当我尝试下载上传文件时,它显示以下错误消息

该进程无法访问文件“[filepath]”,因为它正被另一个进程使用。

当我在说 30 分钟后尝试时,我没有收到任何错误,但是如果我上传新文件并尝试下载它,则会出现同样的错误。

下面是我的下载和上传代码。请帮我找出问题出在哪里。

上传

FileStream fileStream = File.Create(HttpContext.Current.Server.MapPath("myfile.pdf"), (int)filestream.Length);
byte[] bytesInStream = new byte[filestream.Length];
filestream.Read(bytesInStream, 0, bytesInStream.Length);
fileStream.Write(bytesInStream, 0, bytesInStream.Length);

下载

HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=myfile.pdf");

FileStream sourceFile = new FileStream(HttpContext.Current.Server.MapPath("myfile.pdf"), FileMode.Open);
long FileSize;
FileSize = sourceFile.Length;
byte[] getContent = new byte[(int)FileSize];
sourceFile.Read(getContent, 0, (int)sourceFile.Length);
sourceFile.Close();

HttpContext.Current.Response.BinaryWrite(getContent);
HttpContext.Current.Response.End();

看起来文件在上传后没有发布,但我不知道如何在上传后发布该文件,以免在下载时产生任何问题。

4

1 回答 1

0

我解决了这个问题。有一个很小的外观,但一个很大的错误。我忘记在上传功能的末尾添加以下行:

fileStream.Dispose();

因为我没有处理流对象,所以我的文件仍在被该对象使用,我认为垃圾收集器会在一段时间后释放我的文件,这就是我稍后能够下载它的原因。

于 2013-06-17T09:04:35.937 回答