我要上傳多個圖像使用asp.net文件上傳控制。這個解決方案有很多建議。 目前正在使用DataTable。所有圖像放入DataTable視圖狀態,然後檢查其行。我標記檢查文件名如果已經存在,那麼它將不會上傳..但 如果任何用戶瀏覽/上傳具有相同名稱但來自不同文件夾/路徑的圖像這將成爲一個問題。我的代碼在這裏如何檢查圖像已經存在/連接,而一次上傳多個圖像在c#,asp.net
private void AttachImage()
{
string fileName = Convert.ToString(Guid.NewGuid());
string filePath = "images/" + fileName;
fileName = Path.GetFileName(ImageUpload.PostedFile.FileName);
ImageUpload.SaveAs(Server.MapPath(filePath));
DataTable dt = new DataTable();
DataColumn dc = new DataColumn();
dc = new DataColumn("Name", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("Path", typeof(String));
dt.Columns.Add(dc);
dt.Rows.Add(fileName, filePath);
if (ViewState["dt"] == null)
{
ViewState["dt"] = dt;
}
else// (ViewState["dt"] != null)
{
DataTable tmpTable = (DataTable)ViewState["dt"];
tmpTable.Rows.Add(fileName, filePath);
ViewState["dt"] = tmpTable;
}
lstProductsImage.DataSource = (DataTable)ViewState["dt"];
lstProductsImage.DataBind();
}
其次:使用GUID來分配圖像。但它也不適合,因爲它只會改變FileName,並且我們無法確定該文件是否存在於服務器上。 第三個選項可以是,如果文件已經存在於上傳文件夾中,我們詢問用戶他/她是否要覆蓋現有文件。 或者我應該用System.IO.File.Exists(pathToCheck))
??
我想從你身邊很好的建議... 感謝: Saquib
我認爲你沒有正確理解這個問題,這意味着如果用戶從文件夾A中選擇一個圖像abc.png並上傳它,然後他從文件夾B中選擇另一個不同的圖像,並且如果該圖像具有相同的name abc.png,那麼他對圖像名稱的檢查將不允許上傳圖像,因爲具有相同名稱的圖像已經存在sts在桌子裏。這是他的問題。 –
如果是這種情況,我認爲系統需要更高級,因爲無法區分這兩個文件,因爲他從上傳中獲取的所有文件都是文件名。因此,即使他使用GUID,上傳後保存的文件路徑也會相同(images/abc.jpg)。此外,使用ViewStates是保存數據的非常臨時的解決方案,只要頁面被訪問而沒有回傳,數據就消失了。之後,File.Exists將不再起作用,因爲GUID文件名全都是唯一的。 – CoderMarkus