![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Mensaje recibido
Ciertamente se ve mucho más claro el código de esta manera. Espero que le sirva de ayuda a alguien. Saludos marcoszorrilla, y gracias por tu comentario!
|
|
#2
|
||||
|
||||
|
Dado que el código puede ser de utilidad, me he tomado la libertad de indentarlo y publicarlo en este mensaje, ya que en el original del amigo tetemusic, al menos yo, no lo encontré indentado.
Aclaro que no he revisado su contenido ni la lógica... eso ya quedará para quien quiera aprovecharlo. ![]() Hasta luego. ![]() Código:
const
CRLF = #13#10;
var
NomFitxer, path, codi, password: string;
Config: TInifile;
aStream: TMemoryStream;
Params: TMemoryStream;
S, linea: String;
F: TextFile;
begin
//enviamos fichero, sus datos y el user y password están en un .ini
path := ExtractFilePath(Application.ExeName);
Config := TIniFile.Create(path+'config.ini');
with Config do
begin
if ReadString('General','Path','Main') <> 'Main' then
path := ReadString('General','Path','Main');
if ReadString('General','Codi','Main') <> 'Main' then
codi := ReadString('General','Codi','Main');
if ReadString('General','Password','Main') <> 'Main' then
password := ReadString('General','Password','Main');
Free;
end;
OpenDialog1.InitialDir := path;
if OpenDialog1.Execute then
NomFitxer := OpenDialog1.FileName;
if NomFitxer <> '' then
begin
aStream := TMemoryStream.create;
Params := TMemoryStream.Create;
idHTTP1.Request.ContentType := 'multipart/form-data;boundary=-----------------------------7cf87224d2020a';
IdHTTP1.Request.Username := codi;
IdHTTP1.Request.Password := password;
try
S := '-----------------------------7cf87224d2020a' + CRLF +
'Content-Disposition: form-data; name="registro"; filename="'+
RightStr(NomFitxer,14)+'"' + //registro es el nombre del campo del formulario html
CRLF + 'Content-Type: text/plain' + CRLF + CRLF;
Params.Write(S[1], Length(S));
//copiamos contenido del fichero al memory stream "params"
AssignFile(F,NomFitxer);
Append(F);
Reset(F);
while not EOF(F) do
begin
readln(F, linea);
if not EOF(F) then
linea := linea + CRLF;
Params.Write(linea[1],Length(linea));
end;
CloseFile(F);
S := CRLF +
'-----------------------------7cf87224d2020a';
Params.Write(S[1], Length(S));
try
idHTTP1.Post('https:// ... --aqui va a web--', Params,aStream);
except
on E: Exception do
showmessage('Error encountered during POST: ' + E.Message);
end;
aStream.SaveToFile(path+'\result.htm');
aStream.WriteBuffer(#0' ', 1);
showmessage(PChar(aStream.Memory));
except
end;
end;
end;
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate Última edición por jachguate fecha: 22-04-2004 a las 18:17:58. |
|
#3
|
||||
|
||||
|
Hola, tengo una pregunta, yo tengo la misma necesidad de enviar archivos a una direccion https, solo que en mi caso debo enviar primero, la clave clave=xxxxx y despues debo enviar varios archivos, cada uno con un atributo especifico, es decir el primer archivo se refiere a cuentas por cobrar y debe enviar 'cuentasporcobrar='+ archivo.txt y por ultimo una cifra de control que es un hexadecimal de 32 posiciones, tambien con su atributo.
Mi pregunta es, ¿este componente idHTTP puede hacer el envio de varios archivos a la vez y puede mezclar datos simples como una clave y archivos de no mas de 50 k ? De antemano gracias por la atencion. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|