ユーザーの画像をアップロードし、指定した場所に保存しています。コードは通常のシナリオで正常に機能しています。つまり、ユーザーが画像を選択して保存すると、機能します。
チャレンジは、ユーザーが画像を選択し(おそらく間違いによる間違った画像) 、保存せずに、新しい画像を選択して保存すると発生します。 このシナリオでは、次のエラーが表示されます。
「別のプロセスで使用されているため、プロセスはファイルにアクセスできません。」
エラー時の場所から画像を削除しようとすると、次のメッセージが表示されてファイルを削除できません。
「ファイルが 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 」を追加しようとしましたが、ファイルストリームのすべてのオプションで機能しません。
助けてください...