Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2007
piolillo piolillo is offline
Registrado
 
Registrado: abr 2004
Posts: 7
Poder: 0
piolillo Va por buen camino
Unhappy Que estoy haciendo mal ?

Haber en principio muy buenas a todos, tengo una pequeña duda que me carcome por dentro y la cuestión es la siguiente:

Quiero mandar un archivo (Stream) a través de Delphi usando el componente Indi para Delphi 5 que es precisamente la versión que uso, y el problema viene aquí:


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Stream            : TIdMultipartFormDataStream;
begin
 Stream := TIdMultipartFormDataStream.Create;
 try
   Stream.AddFile('file','C:\Documents and Settings\Administrador\Escritorio\prueba.txt','multipart/form-data');

   IdHTTP1.Post('http://www.piolillosoft.com/bajar/bajar.php',Stream);
 finally
   Stream.Free;
 end;


en la parte
Código Delphi [-]
tream.AddFile('file','
(File es el nombre del campo del formulario del script en php que se encargara de copiar el nombre del archivo en el servidor.

Aquí la dirección del script en php:

Código Delphi [-]
IdHTTP1.Post('http://www.piolillosoft.com/bajar/bajar.php',Stream);

Aquí Donde esta hubicado el fichero en mi disco duro:

Código Delphi [-]
Stream.AddFile('file','C:\Documents and Settings\Administrador\Escritorio\prueba.txt','multipart/form-data');

Aquí el enctype de el script en php:
Código Delphi [-]
'multipart/form-data');
(Tal y como esta en el script)

Y el script pues en la misma pagina que os he puesto.

Entonces la pregunta es:
Por que no me envía el fichero qu es lo que estoy haciendo mal ?

Haber como explorador predeterminado uso el Firefox y como lenguaje Delphi5 De hecho todo me compila bien incluso al darle al botón de envío no me genera ningún error solo que no me envía nada si alguien me puede ayudar se lo agradeceré de corazón.

Muchas gracias de ante mano.

Última edición por piolillo fecha: 28-11-2007 a las 02:08:28. Razón: por poner codigo erroneo
Responder Con Cita
  #2  
Antiguo 28-11-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola piolillo,

No puedo ayudarte con tu duda, pero si te puedo decir que estas haciendo mal.

No pones un titulo adecuado al hilo

Eso no ayuda a los demás compañeros si es que tienen el mismo problema que tú.

No usas etiquetas para que tu código se vea bien

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Stream : TIdMultipartFormDataStream;
begin
   Stream := TIdMultipartFormDataStream.Create;
   try
     Stream.AddFile('file','C:\Documents and Settings\Administrador\Escritorio\prueba.txt','multipart/form-data');
     IdHTTP1.Post('http://www.piolillosoft.com/bajar/bajar.php',Stream);
   finally
     Stream.Free;
   end;
end;

Notas la diferencia ?

Te invito a leer la guia de estilo del foro.

Espera un poco y alguien te podrá auxiliar.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 28-11-2007
piolillo piolillo is offline
Registrado
 
Registrado: abr 2004
Posts: 7
Poder: 0
piolillo Va por buen camino
Vale muchas gracias Egostar y disculpa la poca cotumbre ya de por si es un error mio sorry compañero
Responder Con Cita
  #4  
Antiguo 28-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Si no me equivoco, algo en tu código está "mal", y es que no indicas el "MIME/Type" del archivo en el método "AddFile"... he revisado un poco la ayuda, y, bueno, viene incluso el siguiente "ejemplo":

Código Delphi [-]
uses
  IdGlobalProtocols, IdMultipartFormData;

begin
  AValues := TIdStringList.Create;

  AValues.Values['usr'] := '"John Doe"';
  AValues.Values['grp'] := 'public';
  AValues.Values['fil'] := 'c:imageslogo.gif';

  PostStream:= TIdMultiPartFormDataStream.Create;
  ResponseStream := TIdStringStream.Create('');

  try
    PostStream.AddFormField('usr', AValues.Values['usr']);
    PostStream.AddFormField('grp', AValues.Values['grp']);

    PostStream.AddFile('fil', AValues.Values['fil'],
      GetMIMETypeFromFile(AValues.Values['fil']));

    IdHTTP1.Request.ContentType := PostStream.RequestContentType;
    IdHTTP1.Post(sURL, PostStream, ResponseStream);
  finally
    Memo1.Text := ResponseStream.DataString;
    ResponseStream.Free;
    PostStream.Free;
    AValues.Free;
  end;

Pero, por más que le he dado vueltas no he conseguido que funcionase. También yo pruebo con un script PHP en el servidor. Pero, ya digo, no he conseguido que funcionase. Creo que algo se me escapa en todo esto...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 28-11-2007
piolillo piolillo is offline
Registrado
 
Registrado: abr 2004
Posts: 7
Poder: 0
piolillo Va por buen camino
Dec Gracias de todas formas eres muy amable. Lo que me irrita de este código es que algo que parece tan sencillo no funcione jeje, parace ser que no solo a ti se te pasa algo por alto a mi también y la cuestión es que este tema debería de estar más que "Mascado" pero claro ya te digo en este tipo de eventos no estoy muy "ducho" espero que lo pueda(y puedas) resolverlo lo antes posible por que ya no es una cosa que solo la necesite si no ya también es algo de cabezonería más orgullo jejeje, en fin haber si nosotros podemos resolver este rompecabezas o algún compañero nos hecha una manilla en descifrar el por que. No es que sea un Expediente "X" pero claro basta con que falle lo más mínimo en este tipos e códigos para que deje de funcionar el invento, no se si será el script, cosa que lo dudo por que desde el webbrowser se hace perfectamente, funciona el php a las mil maravillas pero claro el tema no es ese, no lo quiero hacer desde el navegador ni mucho menos no es esa la idea, por lo tanto haber si nosotros o bien algún compañero gentil se ofrece para darnos una explicación de que es lo que puede estar fallando.

De ante mano muchas gracias "Dec" y a todos los compañeros del club delphi.

Por favor una ayudita help help
Responder Con Cita
  #6  
Antiguo 29-11-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Smile Las dos instrucciones que te faltan

Hola,

Hay dos instrucciones que son obligatorias antes del post y que te hacen falta. Concretamente el PrepareStreamForDispatch y ubicar la Position en 0.

Mira este ejemplo :

Código Delphi [-]
Var
   TheURL:              String;
   ResponseStream:      TMemoryStream;
   MultiPartFormDataStream: TMsMultiPartFormDataStream;
Begin
     ....
     TheURL := 'http://www.piolillosoft.com/bajar/bajar.php';   
     MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
     ResponseStream          := TMemoryStream.Create;
     try
        SCWHTTP.Request.ContentType := MultiPartFormDataStream.RequestContentType;
        MultiPartFormDataStream.AddFormField('CODE', ACode);
        MultiPartFormDataStream.AddFile('Archivo', AFileName, 'image/jpg');
        { Estas dos deben ir antes del Post }
        MultiPartFormDataStream.PrepareStreamForDispatch;
        MultiPartFormDataStream.Position := 0;
        { Ahora sí envías }
        SCWHTTP.Post(TheURL,MultiPartFormDataStream, ResponseStream);
     finally
        MultiPartFormDataStream.Free;
        ResponseStream.Free;
     end;
End;
Responder Con Cita
  #7  
Antiguo 29-11-2007
piolillo piolillo is offline
Registrado
 
Registrado: abr 2004
Posts: 7
Poder: 0
piolillo Va por buen camino
Hola Rolandoj.

En principio muchísimas gracias por la molestia y amabilidad de tomarte tu tiempo para ayudarme con esto, solo un par de cosillas:

Hice lo que me ponías en tu código pero me encuentro los siguientes problemas al intentar compilarlo:

Código Delphi [-]
[Error] Unit1.pas[34]: Undeclared identifier: 'TMsMultiPartFormDataStream'
[Error] Unit1.pas[38]: Missing operator or semicolon
[Error] Unit1.pas(41): Missing operator or semicolon
[Error] Unit1.pas(42): Missing operator or semicolon
[Error] Unit1.pas[43]: Missing operator or semicolon
[Error] Unit1.pas[45]: Missing operator or semicolon
[Error] Unit1.pas[46): Missing operator or semicolon
[Error] Unit1.pas[46): Incompatible types: TPosition' and Integer'
[Error] Unit1.pas[48]: There is no overloaded version of 'Post' that can be called with these arguments
[Error] Unitl.pasfSO]: Missing operator or semicolon
[Fatal Error] Project!.dpr(5]: Could not compile used unit 'Unitl.pas'

Despues al revisarlo bien me di cienta de que no estaba tampocoen uses el:
MsMultiPartFormData

Una vez lo puse ya estaba más o menos solucionado esa parte


Bueno también se te paso por alto el declarar como variables tipo string Acode y Afilename que creo que son string verdad ?

Tambieen me volvi loco para darme cuenta que este nombre:

Código Delphi [-]
SCWHTTP.Post(
es el nombre que le dabas tu al indy jejeje por que a mi me sale inicialmente como Idhttp

Después tengo el siguiente problema me da error de compilación en:

[Fatal Error] Unit1.pas(8]: File not found: 'MsMult.iPartFormData.dcu'

Que componente estas usando hay ?

Muchas gracias de ante mano y me estas ayudando mucho por favor si eres tan amable haber si soluciono ese poquito que me queda solo decirte que mi script es php uso las indy 9 para delphi 5. Muchísimas gracias de verdad Rolanj y haber si me comentas.

Muchísimas gracias y haber si me dices porfa.
Responder Con Cita
  #8  
Antiguo 28-07-2011
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Que pequeño es el mundo piolillo, jejee. (si eres el piolillo que yo creo que eres que supongo que si).
Me toca programar algo similar a tu duda y se plantea la misma duda de cómo desarrollarlo.
¿Cómo llevas el tema? ¿lo conseguistes al final?
Un Saludo.
Responder Con Cita
  #9  
Antiguo 28-07-2011
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Resuelto.

http://www.delphiaccess.com/forum/de...list;msg=32131
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que estoy haciendo Mal esimon SQL 4 04-07-2006 21:55:25
La web que estoy haciendo (si, ya esta colgada) papulo HTML, Javascript y otros 25 11-01-2006 15:47:42
urgente:Estoy haciendo informes con html pmfras Impresión 1 07-09-2005 16:46:52
Que estoy Haciendo mal jostrix PHP 1 01-11-2004 01:29:16


La franja horaria es GMT +2. Ahora son las 20:21:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi