Avatar billede mbsnet Nybegynder
25. juli 2008 - 18:56 Der er 12 kommentarer og
1 løsning

Upload fil til idHttpServer via web browser (html)

Hej.

Har brug for at kunne sende filer til en web server,
bygget på Indy's http-server i Delphi 7 (tIdHttpServer).

Det skulle gerne fungere som man "kender det" i forbindelse med: <input type="file">....

Har ledt på internet, men kan ikke finde oceaner af hjælp til dette komponent. Er der mon nogen her som kan :)

//mvh mbs
Avatar billede arne_v Ekspert
26. juli 2008 - 19:53 #1
Når du spørger i Delphi kategorien så antager jeg at det er fordi at du vil
lave et client program i Delphi også.

Følgende procedure uploader en fil:

procedure FileUpload(fnm, url, fldnam : string);

var
  http : TIdHTTP;
  req : TIdMultiPartFormDataStream;
  resp : TMemoryStream;

begin
  http := TIdHTTP.Create;
  req := TIdMultiPartFormDataStream.Create;
  resp := TMemoryStream.Create;
  req.AddFile(fldnam, fnm, 'application/octet-stream');
  http.Post(url, req, resp);
end;
Avatar billede mbsnet Nybegynder
26. juli 2008 - 21:29 #2
nope :)
Det er hvordan man håndterer det, at modtage filen med server komponentet.

TIdHttpServer fungerer jo med "aThread", "aRequestInfo" og "aResponseInfo".
Kan p.t sende tekst fra andre form emner,-
Det hentes ud af aRequestInfo.FormParams. (Separeret med: "&")

Vil derudover gerne kunne sende alle slags filer til serveren også.
Avatar billede arne_v Ekspert
26. juli 2008 - 21:51 #3
Ah. "bygget" som i "bygget med nogle features og skal nu udbygges med file upload" !
Avatar billede mbsnet Nybegynder
26. juli 2008 - 21:59 #4
Sorry hvis jeg ikke uddybede det nok :)
Avatar billede mbsnet Nybegynder
26. juli 2008 - 22:11 #6
Har skrevet på dette projekt i et par år. I starten virkede det ikke ordenligt, men efter at have lært omkring delphi og komponenter (takket være eksperten.dk) - har jeg nu fået det til at køre ganske pænt, selvom der har været perioder undervejs, hvor det så sort ud :)

Jeg mangler vist efterhånden kun det her upload, for at kunne begynde at bruge mit eget program, i stedet for at bruge en Windows Server med ASP. - Fedt fordi det kan køre på en alm. XP
Avatar billede mbsnet Nybegynder
26. juli 2008 - 22:12 #7
kigger på det :)
Avatar billede mbsnet Nybegynder
26. juli 2008 - 23:11 #8
Upload fungerer perfekt, men kan ikke finde decoderen i min delphi7.

uses IdMessageDecoderMIME;//not found

fandt dette i idMessage.pas
{ TODO : Moved Decode/Encode out and will add later,. Maybe TIdMessageEncode, Decode?? }

nogle ideer ?
Avatar billede arne_v Ekspert
27. juli 2008 - 01:58 #9
Hvilken version af Indy bruger du ?
Avatar billede arne_v Ekspert
27. juli 2008 - 03:09 #10
Jeg har installeret 10.

Og jeg kan erklære en TIdMessageDecoderMIME hvis jeg har en uses af IdMessageCoderMIME.
Avatar billede mbsnet Nybegynder
27. juli 2008 - 03:11 #11
Version 9.00.10.

Jeg fandt typerne i filerne: idMessage,idMessageCoderMime,idMessageCoder..
Har dog op til flere problemer med at få dekoderen til at virke.

Upload fungerer, så der er points hvis svar..
Skal jeg oprette et nyt spm i forbindelse med dekoderen?

Har problemer med at den hænger fast i:
  try decoder:=decoder.readBody(dest,msgEnd);//hænger her.......

Samtidig mangler flere kommandoer fra eksemplet.
bla: s:=aRequestInfo.headers.values['Content-Type'];

Her mangler den "headers".

Har prøvet med: rawHeaders/customHeaders i stedet, som er de eneste listetyper der ligner :)
Avatar billede mbsnet Nybegynder
05. september 2008 - 20:31 #12
Dette indlæg lukkes indtil videre, men tager det måske op igen senere.
Arne V, hvis du vil have points'ne er det ok (selve uploadet fungerede jo)
Avatar billede arne_v Ekspert
05. september 2008 - 21:41 #13
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester