Foros del Web » Programando para Internet » ASPX (.net) »

[B]Abrir ventana examinar c#[/B]

Estas en el tema de [B]Abrir ventana examinar c#[/B] en el foro de ASPX (.net) en Foros del Web. Hola estoy haciendo un formulario web para enviar correos y quiero que para adjuntar archivos me aparezca la ventana de examinar, utilizo el openfiledialog pero ...
  #1 (permalink)  
Antiguo 30/04/2009, 09:39
 
Fecha de Ingreso: abril-2009
Mensajes: 63
Antigüedad: 15 años
Puntos: 0
[B]Abrir ventana examinar c#[/B]

Hola estoy haciendo un formulario web para enviar correos y quiero que para adjuntar archivos me aparezca la ventana de examinar, utilizo el openfiledialog pero dice que me falta algun using pero no llego a encontrar cual es.

Espero que podais ayudarme.

Saludos!
  #2 (permalink)  
Antiguo 04/05/2009, 08:22
 
Fecha de Ingreso: septiembre-2007
Mensajes: 34
Antigüedad: 16 años, 7 meses
Puntos: 4
Respuesta: [B]Abrir ventana examinar c#[/B]

Cita:
Iniciado por KatonSP Ver Mensaje
Hola estoy haciendo un formulario web para enviar correos y quiero que para adjuntar archivos me aparezca la ventana de examinar, utilizo el openfiledialog pero dice que me falta algun using pero no llego a encontrar cual es.

Espero que podais ayudarme.

Saludos!
Hola:

Espero haberte entendido. Entiendo que intentas utilizar un openFileDialog de windows forms en una aplicación web. Para ello debes añadir una referencia a System.Windows.Forms y añadir también un using de System.Windows.Forms.
  #3 (permalink)  
Antiguo 04/05/2009, 10:28
 
Fecha de Ingreso: abril-2009
Mensajes: 63
Antigüedad: 15 años
Puntos: 0
Respuesta: [B]Abrir ventana examinar c#[/B]

Cita:
Iniciado por Kwasir Ver Mensaje
Hola:

Espero haberte entendido. Entiendo que intentas utilizar un openFileDialog de windows forms en una aplicación web. Para ello debes añadir una referencia a System.Windows.Forms y añadir también un using de System.Windows.Forms.
Gracias, con esto ya puedo utilizar el openfiledialog pero me da un error de excepción al ejecutar la web con el showdialog. Este es el error de excepción:

El subproceso actual debe establecerse en el modo de subprocesamiento controlado simple (Single Thread Apartment, STA) para poder realizar llamadas OLE. Asegúrese de que la función Main tiene marcado STAThreadAttribute. Esta excepción sólo se desencadena si se adjunta un depurador al proceso.

Última edición por KatonSP; 04/05/2009 a las 10:44
  #4 (permalink)  
Antiguo 05/05/2009, 02:33
 
Fecha de Ingreso: septiembre-2007
Mensajes: 34
Antigüedad: 16 años, 7 meses
Puntos: 4
Respuesta: [B]Abrir ventana examinar c#[/B]

Hola de nuevo:

Antes de continuar deberías evaluar si el OpenFileDialog es lo que realmente te conviene. En ASP .NET lo normal es utilizar un FileUpload o un control de html, el <input type:file>.

Si lo necesitas realmente prueba a adaptar esto en tu web.config:

Código:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="WinForm">
      <section name="OpenFileTest" type="System.Configuration.NameValueSectionHandler"/>
    </sectionGroup>
  </configSections>
  <WinForm>
    <OpenFileTest>
      <add key="ApartmentState" value="STA" />
    </OpenFileTest>
  </WinForm>
</configuration>
  #5 (permalink)  
Antiguo 05/05/2009, 04:53
 
Fecha de Ingreso: abril-2009
Mensajes: 63
Antigüedad: 15 años
Puntos: 0
Respuesta: [B]Abrir ventana examinar c#[/B]

Hola gracias de nuevo, creo que voy a probar con el input:file a ver que tal va.
  #6 (permalink)  
Antiguo 05/05/2009, 04:58
 
Fecha de Ingreso: abril-2009
Mensajes: 63
Antigüedad: 15 años
Puntos: 0
Respuesta: [B]Abrir ventana examinar c#[/B]

Lo que me gustaria saber es si se puede coger la ruta que metes el input tipe:file.
  #7 (permalink)  
Antiguo 05/05/2009, 07:30
 
Fecha de Ingreso: septiembre-2007
Mensajes: 34
Antigüedad: 16 años, 7 meses
Puntos: 4
Respuesta: [B]Abrir ventana examinar c#[/B]

Hola:

Estos son los pasos:

Primero agregas un input type:file, y un botón para "cargar". Por ejemplo:

Código:
<input id="uplTheFile" type=file runat="server">
<input type=button id="btnUploadTheFile" value="Upload" 
                    OnServerClick="btnUploadTheFile_Click" runat="server">
Y segundo implementas la función que recoja el click. En el ejemplo anterior sería la función "btnUploadTheFile_Click".


Dentro de dicha función:

Código:
//preguntar si realmente ha seleccionado un archivo:
if (null != uplTheFile.PostedFile) 
  {
    try 
    {
//Es en la propiedad "postedFile" donde se guarda la ruta del archivo
//Con el método "SaveAs" lo guardas en la ruta que tú el digas
      uplTheFile.PostedFile.SaveAs("RUTA, CAMBIAR ESTO");
      txtOutput.InnerHtml = "El archivo <b>" + 
       uplTheFile.PostedFile.FileName +"</b> se ha guardado correctamente";
    }
    catch (Exception e) 
    {
      txtOutput.InnerHtml = "Error al guardar el archivo: <b>" + 
        uplTheFile.PostedFile.FileName +"</b><br>"+ e.ToString();
    }
  }
He adaptado el código de una página web, pero este foro no me permite postear links .

Última edición por Kwasir; 05/05/2009 a las 07:52
  #8 (permalink)  
Antiguo 05/05/2009, 10:27
 
Fecha de Ingreso: abril-2009
Mensajes: 63
Antigüedad: 15 años
Puntos: 0
Respuesta: [B]Abrir ventana examinar c#[/B]

Hola me las arreglé para encontrar la web donde encontraste el código xD, ya trasteando un poco, con lo que me has pasado y mirando en la web ya me funciona, gracias.

El código por si le hace falta a alguien:
Código:
<html>
<head runat="server">
    <title>Página sin título</title>
    <style type="text/css">
        #prueba
        {
            height: 453px;
        }
        #Form2
        {
            height: 432px;
        }
    </style>
</head>
<body>
<script language="C#" runat="server">
    void btnUploadTheFile_Click(object Source, EventArgs evArgs)
    {
        string invento = txtServername.Value;
        string strFileNameOnServer = txtServername.Value;
        string strBaseLocation = "la ruta donde lo guardas";

        if ("" == invento)
        {
            txtOutput.InnerHtml = "Error - a file name must be specified.";
            return;
        }

        if (null != uplTheFile.PostedFile)
        {
            try
            {
                uplTheFile.PostedFile.SaveAs(strBaseLocation + invento);
                txtOutput.InnerHtml = "File <b>" + strBaseLocation + invento + "</b> uploaded successfully";
            }
            catch (Exception e)
            {
                txtOutput.InnerHtml = "Error saving <b>" +
                  strBaseLocation + "Web.config" + "</b><br>" + e.ToString();
            }
        }
    }
    void btnEnviar_Click(object Source, EventArgs evArgs)
    {
        string invento = txtServername.Value;
        string strFileNameOnServer = txtServername.Value;
        string strBaseLocation = "ruta donde se guarda el archivo en el servidor";

        System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();

        msg.To.Add(txtMail.Text);
        msg.From = new System.Net.Mail.MailAddress("correo", "tu nombre", System.Text.Encoding.UTF8);
        msg.Subject = txtNombre.Text;
        msg.SubjectEncoding = System.Text.Encoding.UTF8;
        msg.Body = txtMensaje.Text;
        msg.BodyEncoding = System.Text.Encoding.UTF8;
        msg.IsBodyHtml = false;

        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
        client.Credentials = new System.Net.NetworkCredential("correo", "contraseña");
        client.Port = 25;
        client.Host = "smtp.live.com";
        client.EnableSsl = true;


        //Subir el fichero
        try
        {
            System.Net.Mail.Attachment MiFichero = new System.Net.Mail.Attachment(strBaseLocation + invento);
            msg.Attachments.Add(MiFichero);
            lbErrorEnviar.Text = "Se a adjuntado el archivo correctamente.";
        }
        catch (Exception ex)
        {
            lbErrorEnviar.Text = "No se a adjuntado ningún archivo.";
        }

        //Envio
        try
        {
            client.Send(msg);
            lbError.Text = "El E-Mail se a enviado correctamente.";
        }
        catch (System.Net.Mail.SmtpException ex)
        {
            lbError.Text = "No se a podido enviar el correo.";
        }
    }
</script>
<div id="prueba">
<form id="Form2" enctype="multipart/form-data" runat="server">


  <p />&nbsp;<p />Nombre:
  <asp:TextBox ID="txtNombre" runat="server"></asp:TextBox>
        <p />E-Mail:<asp:TextBox ID="txtMail" runat="server"></asp:TextBox>
        <p />Mensaje:<p />:<asp:TextBox ID="txtMensaje" runat="server" Height="91px" 
            TextMode="MultiLine" CausesValidation="True"></asp:TextBox>
        <p />Adjuntar archivos: 
  <input id="uplTheFile" type="file" runat="server" onchange="this.form.txtServername.value=this.value" onclick="return uplTheFile_onclick()"/>&nbsp; 
  <input id="txtServername" type="text" runat="server"/>



  <input type="button" id="btnUploadTheFile" value="Upload" OnServerClick="btnUploadTheFile_Click" runat="server"/>

        <p />
        <input type="button" id="btnEnviar" value="Enviar" OnServerClick="btnEnviar_Click" runat="server"/>
        <p />
            <asp:Label ID="lbErrorEnviar" runat="server"></asp:Label>
        <p />
            <asp:Label ID="lbError" runat="server"></asp:Label>

</form>

    
<span id="txtOutput" style="font: 8pt verdana;" runat="server" />
</div>
</body>
</html>

Última edición por KatonSP; 05/05/2009 a las 10:34
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:52.