删除图片
问题描述:
我正在使用asp.net C#。我的文件夹中保存图像文件,并删除它。当我delete一个我它给错误“该进程无法访问文件‘C:\的Inetpub \ wwwroot文件\管理\ TEMP \ visible_Jul-13-2009_035606.png’,因为它正另一个进程使用”删除图片
请帮助
代码:
fupAddImage.PostedFile.SaveAs(Server.MapPath("Temp") + @"\" + tempFilename);
File.Delete(Server.MapPath("Temp") + @"\" + tempFilename);
答
如何将图像保存?你是否确定要丢弃用于保存图像的所有图像和Stream
对象?由于两个Image
和Stream
(和StreamWriter
)实现IDisposable
你应该确保调用Dispose
(或设置创建对象时使用的块),以便当图像已保存的文件被正确关闭。
更新:有一两件事你可以尝试是将图像数据保存自己,为了获得准确更有效地掌控它是如何做:
private static void SaveFile(Stream input, string fileName)
{
using (Stream output = File.OpenWrite(fileName))
{
byte[] buffer = new byte[8192];
int bytesRead;
do
{
bytesRead = input.Read(buffer, 0, buffer.Length);
output.Write(buffer, 0, bytesRead);
} while (bytesRead == buffer.Length);
}
}
// Pass the uploaded file data to the above method like this:
SaveFile(fupAddImage.FileContent, Path.Combine(Server.MapPath("Temp"), tempFilename))
答
您需要发布一些代码就知道当然,但该文件可能仍然在某处打开,因此您的应用程序尚未发布文件锁定。尝试关闭任何打开的流并在删除之前处理指向该对象的任何文件句柄。
您可能还需要等待操作系统指向它所有的手柄脱手后释放文件。
我猜问题是上面。如果你正在创建一个文件并在下一行删除它,操作系统可能还没有将文件刷新到磁盘,更不用说释放文件句柄和锁。尝试在写入和删除之间给一段时间,看看是否可以再次删除它。
答
尝试打字:
openFiles散在命令提示符(cmd.exe的)file_path_and_filename
上找原因。
,并确保您有删除权限。
添加特定的信息...你是如何保存的图像,然后你用了如何将其删除。如果你可以在这里发布代码的一部分。 – 2009-07-13 10:39:19
fupAddImage.PostedFile.SaveAs(Server.MapPath(“Temp”)+ @“\”+ tempFilename); File.Delete(Server.MapPath(“Temp”)+ @“\”+ tempFilename); – Xyz 2009-07-13 10:57:41