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.557
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
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 13:17:01.


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