Tôi sẽ tải lên nhiều hình ảnh bằng cách sử dụng điều khiển tải lên tệp asp.net. có nhiều gợi ý trong đầu cho giải pháp này .. hiện đang sử dụng DataTable. tất cả các hình ảnh được đặt trong trạng thái xem DataTable và sau đó trong khi kiểm tra các hàng của nó .. Tôi đánh dấu một Kiểm tra trên FileName nếu đã tồn tại sau đó nó sẽ không tải lên .. Nhưng nếu bất kỳ người dùng duyệt/tải lên một hình ảnh có cùng tên nhưng từ thư mục khác nhau/Đường dẫn nó sẽ trở thành một vấn đề. mã của tôi ở đâyCách kiểm tra xem hình ảnh đó đã tồn tại/đính kèm trong khi Tải lên nhiều hình ảnh tại một thời điểm trong 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();
}
Thứ hai: sử dụng GUID, để gán hình ảnh. nhưng nó cũng sẽ không phù hợp vì nó sẽ chỉ thay đổi FileName và chúng tôi không thể xác định liệu tệp này có tồn tại trên máy chủ hay không. Tùy chọn thứ ba có thể là nếu tệp đã tồn tại trong thư mục tải lên, chúng tôi yêu cầu người dùng nếu họ muốn ghi đè tệp hiện có. Hoặc tôi nên sử dụng System.IO.File.Exists(pathToCheck))
??
Tôi muốn Gợi ý tốt từ phía bạn ... Thanks: Saquib
Tôi nghĩ rằng bạn không hiểu câu hỏi đúng cách, người đó có nghĩa là nếu người dùng chọn một hình ảnh abc.png từ thư mục A và tải lên, sau đó anh ta chọn một hình ảnh KHÁC từ thư mục B và nếu hình ảnh đó giống nhau tên abc.png sau đó kiểm tra tên ảnh của anh ta sẽ không cho phép tải ảnh lên vì ảnh có cùng tên đã cũ sts trong bảng. và đó là vấn đề của anh ấy. –
Nếu đúng như vậy, tôi nghĩ hệ thống cần phải nâng cao hơn vì sẽ không có cách nào để phân biệt hai tệp vì tất cả những gì anh ta lấy từ tệp tải lên là tên tệp. Vì vậy, ngay cả khi anh ấy sử dụng GUID, đường dẫn tệp đã lưu sẽ giống hệt nhau sau khi tải lên (images/abc.jpg). Ngoài ra, việc sử dụng ViewState là một giải pháp rất tạm thời để lưu dữ liệu, ngay sau khi trang được truy cập mà không cần đăng lại, dữ liệu đã biến mất. Và sau đó File.Exists sẽ không còn hoạt động như tên tệp GUID tất cả sẽ là duy nhất. – CoderMarkus