无法完成操作,因为该文件在IIS工作进程中打开

时间:2012-12-26 07:35:48

标签: c# asp.net .net c#-4.0 file-upload

我正在为用户上传图片&将其保存在指定位置。该代码在正常情况下工作正常,即用户选择图像&保存它,它的工作原理。

用户选择图片时出现挑战<(由于错误可能是错误的图像)&amp;不保存,但再次选择一个新的图像&amp;然后保存它。 这个场景给了我错误:

“该进程无法访问该文件,因为该文件正由另一个进程使用。”

当我尝试从错误发生时的位置删除图像时,无法使用消息删除文件:

“无法完成操作,因为该文件在IIS工作进程中已打开 关闭文件,然后重试。“

代码是这样的:

            try
            {
                if (!Directory.Exists(folder))
                    Directory.CreateDirectory(folder);

                msf = new MemoryStream();
                bytes=FileUpload1.FileBytes;
                msf.Write(bytes, 0, bytes.Length);

                using (FileStream stream = new FileStream(folder + "/" + filename, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    //converting any graphic file type to jpeg format
                    Image img = Image.FromStream(msf);
                    img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

                    msf.WriteTo(stream);
                    IsuploadSuccess = true;
                    img.Dispose();
                }
            }
            catch
            {
                IsuploadSuccess = false;
            }
            finally
            {
                if (msf != null)
                {
                    msf.Close();
                    msf.Dispose();
                }
            }

我尝试添加“FileAccess.ReadWrite”&amp;文件流中的“FileShare.ReadWrite”,但对文件流中的所有选项都不起作用。

请帮忙......

1 个答案:

答案 0 :(得分:1)

而不是解决问题,我终于改变方法摆脱挑战的来源。我使用附加了CurrentDateTime的UserID(唯一)更改文件名,并将其转换为字符串&amp;将其存储到临时文件夹,直到用户保存更改。每次为挑战场景形成一个不同的文件。保存用户创建的临时文件夹中的每个文件(前面有唯一的用户ID)后删除&amp;最后的更改将保存到相应的目录中。