【发布时间】:2011-02-01 09:28:19
【问题描述】:
我有一个简单的表单,用户可以使用它来上传图片。它有一个预览按钮,因此当用户选择图像并单击预览时,会发生回发,我将图像保存到临时文件夹并调整其大小并将其显示在页面上。从那里,用户可以submit form 或edit 表单。如果他提交,一切正常,我将调整大小的图像复制到正确的文件夹中。
如果他点击编辑,并选择另一张图片,我需要删除上传的文件(原始文件和调整大小的文件),如果我这样做:
File.Delete(HostingEnvironment.MapPath(TmpDirectory + PostImageName + ".jpg"));
File.Delete(HostingEnvironment.MapPath(TmpDirectory + PostImageName + "_small_.jpg"));
我收到一个异常,说其他进程正在使用该图像并且它无法删除。 (即使在回发之后!)
另外,如果我没有删除该文件,而是尝试用相同的名称保存新图像以便它会覆盖,它仍然会抛出错误,因为文件已经存在。
用户可以编辑/预览的次数没有限制,所以我不能增量保存文件(这样做甚至没有意义)
此外,在回发之后,当用户返回编辑模式并查看表单时,文件上传控件为空。如何让文件上传控件保留该值?所有其他文本框、文本区域和复选框都正常运行。
总结这些是我的问题:
1) 我到底如何(或者更确切地说,在 c# 中)删除文件而不出现该异常?
或
1)如何覆盖文件?
2) 如何使文件上传控件在回发之间保持其值。
谢谢。
【问题讨论】:
标签: c# image file-upload