2012-09-19 22 views
5

Duplicar posible:
How to restrict file type in FileUpload controlimágenes ASP.NET FileUpload única, el ahorro de ruta y el nombre en la tabla de SQL

tengo un problema, usando mi cargador de imágenes. Subirá todo tipo de archivos. Necesito el código detrás, para determinar si se trata de una imagen (jpg, png, etc.). Luego necesita guardar la ruta y el nombre de archivo en mi sql. El nombre y la ruta de guardado están activos y en funcionamiento, al igual que la expresión regular. Ahora necesito incorporar un código que he encontrado aquí. La pregunta es, ¿cómo se hace?

Mi código subyacente es:

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    if (FileUpload1.PostedFile != null) 
    { 
     string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 

     //Save files to disk 
     FileUpload1.SaveAs(Server.MapPath("~/_PublicData/Images/" + FileName)); 

     //Add Entry to DataBase 
     String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["Computer_Klubben_CommunitySiteConnectionString"].ConnectionString; 
     SqlConnection con = new SqlConnection(strConnString); 
     string strQuery = "insert into dbo.Billeder (FileName, FilePath)" + " values(@FileName, @FilePath)"; 
     SqlCommand cmd = new SqlCommand(strQuery); 
     cmd.Parameters.AddWithValue("@FileName", FileName); 
     cmd.Parameters.AddWithValue("@FilePath", "~/_PublicData/Images/" + FileName); 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = con; 

     try 
     { 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
     } 

     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 

     finally 
     { 
      con.Close(); 
      con.Dispose(); 
     } 
    } 
} 

tengo que poner ese código en el código siguiente, que he encontrado aquí. How can i upload only jpeg files?

¿Debo colocar mi código después del código de aquí o lo coloco? Por favor ayuda.

Respuesta

3
protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    if (FileUpload1.PostedFile != null) 
    { 
      string fileExt = 
       System.IO.Path.GetExtension(FileUpload1.FileName); 

      if (fileExt == ".jpeg" || fileExt == ".jpg") 
      { 

string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 

     //Save files to disk 
     FileUpload1.SaveAs(Server.MapPath("~/_PublicData/Images/" + FileName)); 

     //Add Entry to DataBase 
     String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["Computer_Klubben_CommunitySiteConnectionString"].ConnectionString; 
     SqlConnection con = new SqlConnection(strConnString); 
     string strQuery = "insert into dbo.Billeder (FileName, FilePath)" + " values(@FileName, @FilePath)"; 
     SqlCommand cmd = new SqlCommand(strQuery); 
     cmd.Parameters.AddWithValue("@FileName", FileName); 
     cmd.Parameters.AddWithValue("@FilePath", "~/_PublicData/Images/" + FileName); 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = con; 

     try 
     { 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
     } 

     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 

     finally 
     { 
      con.Close(); 
      con.Dispose(); 
     } 


} 
else 
{ 
    //Show Error Message. Invalid file. 
} 


    } 

} 
+0

Eso es lo que pensé también ... Lo intentaré ahora. – Anders

+0

Gracias ... Tuve que escuchar sobre cómo hacer un foro primero. Mi maestro quería mi atención primero. Esto es lo que yo quería. Gracias de nuevo. – Anders

1

he encontrado una solución con esta solución:

<asp:FileUpload ID="fuImportImage" runat="server" /> 
<asp:RegularExpressionValidator ID="regexValidator" runat="server" 
    ControlToValidate="fuImportImage" 
    ErrorMessage="Only JPEG images are allowed" 
    ValidationExpression="(.*\.([Jj][Pp][Gg])|.*\.([Jj][Pp][Ee][Gg])$)"> 
</asp:RegularExpressionValidator> 
2

que han pedido a partir del código detras a fin de tratar este método para validar los nombres de archivo si son o no alguna imagen. mediante la comparación de sus extensiones .. Sólo tiene que pasar el nombre de su control de FileUplaod a este método y validar Click del botón ..

private Boolean ImageUploadValidation(FileUpload UploadedFile) 
{ 
    String FileExtension = String.Empty, Code = String.Empty; 
    try 
    { 
     if (String.IsNullOrEmpty(UploadedFile.PostedFile.FileName)) 
     { 
      Code = "<script> alert(' Please select file');</script>"; 
      ClientScript.RegisterStartupScript(this.GetType(), "someKey", Code); 
      return false; 
     } 

     FileExtension = Path.GetExtension(UploadedFile.FileName).ToLower(); 

     if (!FileExtension.Equals(".gif") && 
      !FileExtension.Equals(".png") && 
      !FileExtension.Equals(".jpg") && 
      !FileExtension.Equals(".bmp") && 
      !FileExtension.Equals(".gif") && 
      !FileExtension.Equals(".jpeg") && 
      !FileExtension.Equals(".tif") && 
      !FileExtension.Equals(".tiff")) 
     { 
      Code = "<script> alert(' Please select valid file. File can be of extension(gif, png, jpg, bmp, gif, jpeg, tif, tiff)');</script>"; 
      ClientScript.RegisterStartupScript(this.GetType(), "someKey", Code); 
      return false; 
     } 
     return true; 
    } 
    catch (Exception) 
    { 

     throw; 
    } 
+0

Soy lo siento editó su código por error, creo que es mío –

+0

¿Cómo puedo retrotraer mi edición, lo lamento en otro momento, porque he enviado una respuesta, deseé modificar mi respuesta –

+0

Eso está bien ... edité nuevamente el código ... :) –

0

Aquí es expresión regular para usted ..

System.Text.RegularExpressions.Regex imageFilenameRegex = new 
System.Text.RegularExpressions.Regex(@"(.*?)\.(jpg|jpeg|png|gif)$", 
System.Text.RegularExpressions.RegexOptions.IgnoreCase); 


bool ismatch =imageFilenameRegex.IsMatch(imgFile.FileName) 
Cuestiones relacionadas