0

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

用户选择图像(可能由于错误而导致错误图像)并且不保存它,但再次选择新图像然后保存它时,会发生挑战。 这种情况给了我错误:

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

当我尝试在出错时从该位置删除图像时,无法删除文件并显示以下消息:

“操作无法完成,因为文件在 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”“FileShare.ReadWrite”,但也不适用于文件流中的所有选项。

请帮忙...

4

1 回答 1

1

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

于 2013-01-15T12:35:51.103 回答