Voy a cargar varias imágenes con el control de carga de archivos asp.net. hay muchas sugerencias en mente para esta solución. actualmente estoy usando DataTable. todas las imágenes se ponen en estado de vista de DataTable y luego mientras se verifican sus filas ... Marcaré un Check en FileName si ya existe, entonces no se cargará ... Pero si algún usuario examina/carga una imagen con el mismo nombre pero desde diferentes carpetas/rutas se convertirá en un problema. mi código está aquíCómo comprobar que la imagen ya existe/está conectada al cargar varias imágenes a la vez en 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();
}
En segundo lugar: uso de GUID, para asignar imágenes. pero tampoco será adecuado ya que solo cambiará FileName y no podremos determinar si este archivo existe en el servidor o no. Tercera opción puede ser que si el archivo ya existe en la carpeta de carga, le preguntamos al usuario si desea sobrescribir el archivo existente. O debería usar System.IO.File.Exists(pathToCheck))
??
Quiero buenas sugerencias de su lado ... Gracias : Saquib
Creo que no entendiste la pregunta correctamente. Ese tipo significaba que si el usuario selecciona una imagen abc.png de la carpeta A y la carga, entonces selecciona otra imagen DIFERENTE de la carpeta B y si esa imagen tiene el mismo nombrar abc.png luego su control en el nombre de la imagen no permitirá cargar la imagen porque la imagen con el mismo nombre ya exi pts en la mesa. y ese es su problema –
Si ese es el caso, creo que el sistema necesita estar más avanzado porque no habría forma de diferenciar los dos archivos, ya que todo lo que está tomando de la carga es el nombre del archivo. Por lo tanto, incluso si utilizara GUID, la ruta del archivo guardada sería idéntica después de la carga (images/abc.jpg). Además, el uso de ViewStates es una solución muy temporal para guardar los datos, tan pronto como se visita la página sin devolución de datos, los datos desaparecen. Y después de eso, File.Exists ya no funcionaría ya que los nombres de los archivos GUID serían únicos. – CoderMarkus