Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: harry_the_blogger en 8 Marzo 2014, 19:04 pm



Título: ¿Como puedo hacer File Upload con CGI en C++??
Publicado por: harry_the_blogger en 8 Marzo 2014, 19:04 pm
Hola, ¿Como están? Tengo que hacer mi propio CGI hecho en C++ para recibir un archivo y subirlo al servidor. Ya tengo parte del código hecho y ya he investigado, pero resulta que al escribir lo que recibe por la entrada tambien se mezcla con algo que pareciera una cabecera HTTP. No se como recibir unicamente al archivo, sin cabeceras ni otras cosas. Gracias de antemano.

Ahora publicó parte de mi código que falla:

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <iostream>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11.  
  12.    ///Esto me funciona. Por lo menos puedo contar cuantos bytes mide el archivo aproximadamente.
  13.    int content_length = atol(getenv("CONTENT_LENGTH"));
  14.    char *content = new char[content_length];
  15.  
  16.    ///Abro un stream para escribir el archivo a subir.
  17.    ofstream archivo;
  18.    archivo.open("D:\\Archivos de Programa\\Apache Software Foundation\\Apache2.2\\uploads\\archivo_subido.txt");
  19.  
  20.    cout << "Content-type:text/html\r\n\r\n";
  21.    cout << "<html><head><title>Page</title></head>";
  22.    cout << "<body><h1>Content lenght: ";
  23.    cout << content_length << "</h1>";
  24.  
  25.    ///He oido que los archivos enviados por HTML se recibe por la entrada estandar
  26.    ///Asi que lo recibo lo copio a un buffer
  27.    cin.read(content, content_length);
  28.  
  29.    cout << "<h1>Content</h1>";
  30.    cout << "<b>" << content << "</b>";
  31.  
  32.    ///El contenido del archivo lo grabó en disco.
  33.    archivo << content;
  34.  
  35.    /*cout << content;*/
  36.  
  37.    cout << "<br><br>" << content;
  38.    cout << "</h1>";
  39.    cout << "</body></html>";
  40.  
  41.    archivo.close();
  42.  
  43.    delete [] content;
  44.  
  45.    return 0;
  46. }
  47.  

¿Será que alguien sabe como puedo el archivo sin cabeceras HTTP, en binario puro y duro? Gracias de antemano.


Título: Re: ¿Como puedo hacer File Upload con CGI en C++??
Publicado por: engel lex en 8 Marzo 2014, 20:20 pm
un  archivo html sin cabeceras, dudo que se pueda llamar html XD posiblemente el servidor lo rechaza... no estarás más bien tratando de subirlo al servidor por FTP?


Título: Re: ¿Como puedo hacer File Upload con CGI en C++??
Publicado por: harry_the_blogger en 8 Marzo 2014, 22:45 pm
No. Lo estoy subiendo usando html. Por si acaso te muestro el codigo que uso en la pagina html:

Código
  1. <title>Upload</title>
  2. </head>
  3.  
  4.  
  5. <form target="_blank" enctype="multipart/form-data" method="post" action="/cgi-bin/upload.cgi">
  6.    <input name="file" type="file" /> <input name="submit" type="submit" />
  7. </form>
  8.  
  9.  
  10. </body>
  11. </html>

Uso ese codigo como formulario, y luego llama a un CGI llamado upload, que es el que mostré en mi mensaje anterior. Gracias de antemano, por si logras conseguir una forma de que mi codigo trabaje bien.


Título: Re: ¿Como puedo hacer File Upload con CGI en C++??
Publicado por: #!drvy en 17 Marzo 2014, 21:16 pm
Hola, te lo muevo a Programación C/C++  para ver si te pueden ayudar.


Saludos