Graeme Geldenhuys schrieb:
Hi Darius,

Did you ever manage to get an example of uploading a file?  I've got a
CGI app based on Powtils or PSP or whatever it's called these days. My
CGI app needs to permit uploading of files, but I got no idea how to
do it.

Regards,
  - Graeme -

You just want to upload a file to a server using a CGI running on that server?
I did this with cgiapp contained in the fpc-web package.

It's quite simple - if needed I could extract the relevant lines out of my (quite complex) CGI tomorrow and create a compilable example.

The relevant parts are:

uses cgiapp,...;

....

Type
  TYourNewCGI = Class(TCGIApplication)
    Procedure DoRun; override;
  end;

.....

procedure TYourNewCGI.DoRun;
Var RcvStream:TMemoryStream;
    SndStream:TMemoryStream;
    L:TStringList;
begin
  RcvStream:=TMemoryStream.Create;
  SndStream:=TMemoryStream.Create;
  L:=TStringList.Create;
  try
    If (RequestVariableCount>0) then begin
      GetRequestVarList(L,True);
      for i:=0 to L.Count-1 do begin
        if VariableIsUploadedFile(L[i]) then begin
          RcvStream.LoadFromFile(UploadedFileName(L[i]));
        end;
      end;
    end;
AddResponseLn('Content-Disposition: inline; filename="data.txt" Content-Type: application/txt;');
    AddResponseLn('');
    SndStream.LoadFromFile('FileToSendBack.txt');
    SndStream.Seek(0,soBeginning);
    Response.CopyFrom(SndStream,SndStream.Size);
  finally
    RcvStream.Free;
    SndStream.Free;
    L.Free;
    Terminate;
  end;
end;

begin
  With TYourNewCGI.Create(Nil) do begin
    try
      Title:='YourNewCGI';
      Initialize;
      Run;
    Finally
      Free;
    end;
  end;
end.


Regards
Lukas

--

--------------------------
software security networks
Lukas Gradl <fpc#ssn.at>
Eduard-Bodem-Gasse 9
A - 6020 Innsbruck
Tel: +43-512-214040-0
Fax: +43-512-214040-21
--------------------------
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to