我有一个ASP.NET Web表单网站。按下上传按钮时会运行此代码。这段代码有很多问题。它不快速和简单,它有一个大问题。对于第一次图像上传,它工作得很好但是当我想要替换文件时返回Access denied
错误。我在IIS Express上有此错误,但它在Visual Studio开发服务器上正常工作。
note :我有网格视图,显示必须更改哪个用户图像;此网格视图还帮助我找到特定的用户图像文件。
if (UsersImageFileUpload.HasFile && UsersImageFileUpload.PostedFile.ContentType.StartsWith("image"))
{
string filename = UploadUsersImageGridView.SelectedRow.Cells[1].Text.ToString();
if (!File.Exists(Server.MapPath("~/App_Data/Backups/" + filename)))
{
UsersImageFileUpload.PostedFile.SaveAs(Server.MapPath("~/App_Data/Users/") + filename);
}
else if (File.Exists(Server.MapPath("~/App_Data/Backups/" + filename)))
{
File.Delete(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"));
UsersImageFileUpload.PostedFile.SaveAs(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"));
File.Replace(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"), Server.MapPath("~/App_Data/Users/") + filename, Server.MapPath("~/App_Data/Backups/"));
File.Delete(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"));
}
}
}
错误标题 :Server Error in '/' Application
。
错误第二个标题 :The process cannot access the file 'D:\Website\App_Data\Users\1-fullname' because it is being used by another process.
错误说明 :An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
错误详情 :System.IO.IOException: The process cannot access the file 'D:\App_Data\Users\1-fullname' because it is being used by another process
我的问题:
答案 0 :(得分:1)
1)您的代码是正确的
2)可能这是因为您要替换的文件设置为“只读”,更改它并尝试替换它
3)不知道
4)你可以尝试任何自定义上传方法或使用ajax,它会更快但不简单,因为asp.net文件上传
5)我认为这是一个很好的
答案 1 :(得分:0)
试试这个: - 右键单击放置文件的文件夹并提供完全访问权限