Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Ayuda para crear un subidor de archivos (imagenes) en C# (http://www.forosdelweb.com/f29/ayuda-para-crear-subidor-archivos-imagenes-c-872068/)

LOD_Fredy 28/12/2010 16:15

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.

Peterpay 30/12/2010 12:54

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

LOD_Fredy 05/01/2011 19:30

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.

Porlachucha 06/01/2011 06:53

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

LOD_Fredy 06/01/2011 12:05

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

Iniciado por Porlachucha (Mensaje 3695651)
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.

Porlachucha 06/01/2011 12:31

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

LOD_Fredy 07/01/2011 22:20

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

Iniciado por Porlachucha (Mensaje 3696122)
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).

LOD_Fredy 07/01/2011 23:19

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.             }

LOD_Fredy 11/01/2011 16:49

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.


La zona horaria es GMT -6. Ahora son las 10:06.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.