Foros del Web » Programación para mayores de 30 ;) » .NET »

Ayuda para crear un subidor de archivos (imagenes) en C#

Estas en el tema de Ayuda para crear un subidor de archivos (imagenes) en C# en el foro de .NET en Foros del Web. Hola a todos, debido a que ultimamente necesito subir imagenes, las subo a imageshack con el imageshack uploader, sin embargo tengo un hosting en el ...
  #1 (permalink)  
Antiguo 28/12/2010, 16:15
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Ayuda para crear un subidor de archivos (imagenes) en C#

Hola a todos, debido a que ultimamente necesito subir imagenes, las subo a imageshack con el imageshack uploader, sin embargo tengo un hosting en el cual podria subir las imagenes, sin embargo quiero hacerlo desde un programa como el antes mencionado, solo que no tengo idea de que codigo usar, supongo tendria que usar FTP desde C#, solo que no quiero un cliente ftp, quiero poder subir varios archivos (imagenes), darle en subir, una vez las suba me muestre una vista previa pequeña y los links de las imagenes para copiarlos y pegarlos donde necesite (estilo imageshack uploader). Aun no empiezo el formulario con la interfaz, pues queria saber que elementos de codigo o protocolos necesito saber para en caso de que no me puedan ayudar a construirlo, cuando menos tener una idea de como ir formando el subidor por dentro y asi saber que podre o no usar en la gui.

Gracias y disculpen la molestia.
  #2 (permalink)  
Antiguo 30/12/2010, 12:54
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

Investiga sobre la clase

WebClient

- UploadData
- UploadValues
- UploadFile

si no me equivoco con eso podras realizar un uploader de archivos para sitios de alojamiento gratuito que usan formularios algunos y cuentas ftp otros.

por ftp seria mas simple pero no todos los proveedores de alojameinto de imagenes te permiten eso asi que es mas jugar con una peticion http (emular el envio manual de la imagen desde el codigo)

un saludo y feliz 2011
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 05/01/2011, 19:30
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

Ya pude subir archivos, ahora hare las modificaciones para que parezca un cliente ftp especializado en subir imagenes.

Solo hay algo que me falta y que seria super util, quiciera poder arrastrar elementos del explorador de windows hacia el textbox y que vaya escribiendo la ruta de cada elemento en una linea del textbox (de preferencia en la propiedad Lines que es la que uso), yo me encargaria de que no lo haga cuando no sea la extension de algun tipo de imagen.

Gracias y ojala me puedan ayudar con esto para que quede al 100 el subidor.

Última edición por LOD_Fredy; 05/01/2011 a las 20:12
  #4 (permalink)  
Antiguo 06/01/2011, 06:53
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

el control richTextBox, te permite especificar la propiedad EnableAutoDragDrop, lo cual hace lo que necesitas. el otro control textbox no tiene esta propiedad.

plch
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...
  #5 (permalink)  
Antiguo 06/01/2011, 12:05
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

Cita:
Iniciado por Porlachucha Ver Mensaje
el control richTextBox, te permite especificar la propiedad EnableAutoDragDrop, lo cual hace lo que necesitas. el otro control textbox no tiene esta propiedad.

plch
Se podra hacer con un datagrid? La idea que tengo es la siguiente:

tengo un datagrid que en cada renglon contendra la ubicacion de cada archivo a subir (ya sea con el opendialog, que es lo que tengo en este momento o con el arrastrar y soltar que es mas util)

Quiero poder:

Eliminar el renglon especificado al presionar la tecla suprimir.
Poder agregar mas ubicaciones a partir del arrastrar y soltar.

He buscado lo del arrastrar y soltar pero no menciona como hacerlo arrastrando y soltando elementos del explorador de windows, vienen ejemplos de como arrastrar y soltar elementos del formulario y no me sirve.

Le buscare al richtext por mientras, aunque me gustaria mas que fuera con el datagrid para poder eliminar renglones.
  #6 (permalink)  
Antiguo 06/01/2011, 12:31
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

creo que si. nunca lo he intentado, pero mita estas paginas. al parecer el datagrid tiene propiedades para manejar los eventos drag y drop

http://www.dreamincode.net/forums/to...-datagridview/
http://blog.tercerplaneta.com/2008/0...-winforms.html

suerte con esto

plch
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...
  #7 (permalink)  
Antiguo 07/01/2011, 22:20
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

Cita:
Iniciado por Porlachucha Ver Mensaje
creo que si. nunca lo he intentado, pero mita estas paginas. al parecer el datagrid tiene propiedades para manejar los eventos drag y drop

http://www.dreamincode.net/forums/to...-datagridview/
http://blog.tercerplaneta.com/2008/0...-winforms.html

suerte con esto

plch
Pero esos links son para arrastrar y soltar elementos del winform, no para reconocer elementos del explorador de windows (ejemplo, archivos de imagenes jpg), eso que me pasas sale facil en google, lo que quiero no (al menos las palabras que he usado no me dan el resultado que quiero)

Gracias de cualquier manera, sigo esperando a que alguien me de un norte con esto que pareciera no poder hacerse (aunque deberia).
  #8 (permalink)  
Antiguo 07/01/2011, 23:19
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

Ya que sigo sin saber como arrastrar y soltar imagenes desde explorador de windows hacia el datagridview y agregar de esta forma la ruta de las imagenes, estoy tratando de mejorar lo mas posible la funcion abrir del openfiledialog.

Edito: boton si y no para borrar puesto, problema de renglones en blanco solucionado, sin embargo surgio otro problema.

Hice que al abrir imagenes con el openfile me agregue los renglones de las imagenes abiertas por lo que se forma una lista con imagfenes en estado subida y procesando, el problema es que al eliminar algun renglon y querer abrir mas imagenes, me marca que el indice esta fuera del alcance marcando o que el indice es menor a cero o mayor al tamaño del arreglo, el detalle es que lo marca en la variable i que uso en el for para recorrer el arreglo que contiene las rutas de los archivos recien abiertos. Dejo esa parte del codigo para ver si me dan solucion antes de que la encuentre.

Código C++:
Ver original
  1. string[] rutas;
  2.             int cont = 0;            
  3.             DialogResult dr = this.openFileDialog1.ShowDialog();
  4.             if (dr == System.Windows.Forms.DialogResult.OK)
  5.             {
  6.                 rutas = new string[openFileDialog1.FileNames.Length];
  7.                 // Read the files
  8.                 foreach (String file in openFileDialog1.FileNames)
  9.                 {
  10.                     // Create a PictureBox.
  11.                     try
  12.                     {
  13.                         rutas[cont++] = file;
  14.                         //PictureBox pb = new PictureBox();
  15.                         /*Image loadedImage = Image.FromFile(file);                
  16.                         pb.Height = loadedImage.Height;
  17.                         pb.Width = loadedImage.Width;
  18.                         pb.Image = loadedImage;
  19.                         flowLayoutPanel1.Controls.Add(pb);*/
  20.                     }
  21.                     catch (System.Security.SecurityException ex)
  22.                     {
  23.                         // The user lacks appropriate permissions to read files, discover paths, etc.
  24.                         MessageBox.Show("Security error. Please contact your administrator for details.\n\n" +
  25.                         "Error message: " + ex.Message + "\n\n" +
  26.                         "Details (send to Support):\n\n" + ex.StackTrace
  27.                         );
  28.                     }
  29.                     catch (Exception ex)
  30.                     {
  31.                         // Could not load the image - probably related to Windows file system permissions.
  32.                         MessageBox.Show("Cannot display the image: " + file.Substring(file.LastIndexOf('\\'))
  33.                         + ". You may not have permission to read the file, or " +
  34.                         "it may be corrupt.\n\nReported error: " + ex.Message);
  35.                     }
  36.                 }
  37.                 //rutas.Remove(rutas.Length - 2);
  38.                 //dataGridView1.Rows.Clear();
  39.                 //int total2 = total + rutas.Count();
  40.                 for (int i = 0; i< rutas.Count(); i++)
  41.                 {
  42.                     dataGridView1.Rows.Add();
  43.                     dataGridView1.Rows[total].Cells[0].Value = rutas[i];
  44.                     dataGridView1.Rows[total++].Cells[1].Value = "Procesando...";
  45.                 }
  46.                 openFileDialog1.Dispose();
  47.  
  48.             }

Última edición por LOD_Fredy; 08/01/2011 a las 01:37
  #9 (permalink)  
Antiguo 11/01/2011, 16:49
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda para crear un subidor de archivos (imagenes) en C#

Ya logre lo que queria, dejo el codigo para arrastrar y soltar archivos y que almacene la ruta en el datagrid.

Código C++:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10.  
  11. namespace WindowsFormsApplication1
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.  
  20.         private void Form1_Load(object sender, EventArgs e)
  21.         {
  22.             /*this.AllowDrop = true;
  23.             this.DragEnter += Form1_DragEnter;
  24.             this.DragDrop += Form1_DragDrop;*/
  25.             dataGridView1.AllowDrop = true;
  26.             dataGridView1.DragEnter += Form1_DragEnter;
  27.             dataGridView1.DragDrop += Form1_DragDrop;
  28.         }
  29.  
  30.         private void Form1_DragEnter(object sender, DragEventArgs e)
  31.         {
  32.             /*if (e.Data.GetDataPresent(DataFormats.FileDrop))
  33.             {
  34.                 e.Effect = DragDropEffects.Copy;
  35.             }
  36.             else
  37.             {
  38.                 e.Effect = DragDropEffects.None;
  39.             }*/
  40.         }
  41.  
  42.         private void Form1_DragDrop(object sender, DragEventArgs e)
  43.         {
  44.             /*if (e.Data.GetDataPresent(DataFormats.FileDrop))
  45.             {
  46.                 string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
  47.                 foreach (string fileLoc in filePaths)
  48.                 {
  49.                     // Code to read the contents of the text file
  50.                     if (File.Exists(fileLoc))
  51.                     {
  52.                         using (TextReader tr = new StreamReader(fileLoc))
  53.                         {
  54.                             MessageBox.Show(tr.ReadToEnd());
  55.                         }
  56.                     }
  57.  
  58.                 }
  59.             }*/
  60.         }
  61.  
  62.         private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
  63.         {
  64.  
  65.         }
  66.  
  67.         private void dataGridView1_DragEnter(object sender, DragEventArgs e)
  68.         {
  69.             if (e.Data.GetDataPresent(DataFormats.FileDrop))
  70.             {
  71.                 e.Effect = DragDropEffects.Copy;
  72.             }
  73.             else
  74.             {
  75.                 e.Effect = DragDropEffects.None;
  76.             }
  77.         }
  78.  
  79.         private void dataGridView1_DragDrop(object sender, DragEventArgs e)
  80.         {
  81.             if (e.Data.GetDataPresent(DataFormats.FileDrop))
  82.             {
  83.                 string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
  84.                 foreach (string fileLoc in filePaths)
  85.                 {                    
  86.                     if (File.Exists(fileLoc))
  87.                     {                        
  88.                         {
  89.                             dataGridView1.Rows.Add();
  90.                             dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0].Value = fileLoc;
  91.                         }
  92.                     }
  93.  
  94.                 }
  95.             }
  96.         }
  97.     }
  98. }

Aunb espero ayuda con el problema de mi post anterior.

Última edición por LOD_Fredy; 11/01/2011 a las 16:57

Etiquetas: imagenes
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:35.