[英]Why is File.exists (Filename) statement not working?
這是我的代碼
protected void btnAdd_Click(object sender, EventArgs e)
{
if (FileUploadControl.HasFile)
{
try
{
string filename = Path.GetFileName(FileUploadControl.FileName);
switch(SubDrpDownList.SelectedIndex)
{
case 0:
if (!File.Exists(filename))
FileUploadControl.SaveAs(Server.MapPath("~/Books/Math/") + filename);
else if (File.Exists(filename))
{
throw new DuplicateWaitObjectException();
}
break;
case 1:
if (!File.Exists(filename))
FileUploadControl.SaveAs(Server.MapPath("~/Books/Physics/") + filename);
else if (File.Exists(filename))
{
throw new DuplicateWaitObjectException();
}
break;
case 2:
if (!File.Exists(filename))
FileUploadControl.SaveAs(Server.MapPath("~/Books/Drawing/") + filename);
else if (File.Exists(filename))
{
throw new DuplicateWaitObjectException();
}
break;
}
lblStatus.Text = "Upload status: File uploaded!";
}
catch (Exception ex)
{
lblStatus.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
}
}
}
根據類別,我希望書籍上傳到我使用switch語句實現的diffrenet文件夾。 問題是當我上傳一本書然后第二次再次上傳它時,File.Exists(filename)不起作用。 我想要的是如果我上傳同一個文件兩次,我想拋出一個異常,即重復文件一直在嘗試上傳。 但是在case語句的情況下只有line!File.Exists(filename))即使在重復文件的情況下也會被執行。 為什么File.Exists(filename)沒有被執行?
問題是您正在檢查文件是否僅基於文件名存在,而不是文件的完整路徑。 應該是什么
protected void btnAdd_Click(object sender, EventArgs e)
{
if (FileUploadControl.HasFile)
{
try
{
string filename = Path.GetFileName(FileUploadControl.FileName);
switch(SubDrpDownList.SelectedIndex)
{
case 0:
if (!File.Exists(Server.MapPath("~/Books/Math/") + filename))
FileUploadControl.SaveAs(Server.MapPath("~/Books/Math/") + filename);
else
{
throw new DuplicateWaitObjectException();
}
break;
case 1:
if (!File.Exists(Server.MapPath("~/Books/Physics/") + filename))
FileUploadControl.SaveAs(Server.MapPath("~/Books/Physics/") + filename);
else
{
throw new DuplicateWaitObjectException();
}
break;
case 2:
if (!File.Exists(Server.MapPath("~/Books/Drawing/") + filename))
FileUploadControl.SaveAs(Server.MapPath("~/Books/Drawing/") + filename);
else
{
throw new DuplicateWaitObjectException();
}
break;
}
lblStatus.Text = "Upload status: File uploaded!";
}
catch (Exception ex)
{
lblStatus.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
}
}
}
這將解釋您上傳文件的位置與檢查文件存在的位置不同的事實
另外,elseif只需要是else,因為它存在或不存在,所以你不需要再次檢查它是否存在,這是由“else”暗示的
我認為你遇到的問題是你將完整的文件名(帶路徑)減少到這里的文件名:
string filename = Path.GetFileName(FileUploadControl.FileName);
從那時起!File.Exists總是如此。
例如。 您正在將“C:\\ Somepath \\ myfile.txt”減少為“myfile.txt”,然后檢查它是否存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.