Announcement

Collapse
No announcement yet.

HTTP file upload mit "multipart/form-data"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • HTTP file upload mit "multipart/form-data"

    Hallo,<br>
    benutze noch Delphi 5.0 und versuche verzweifelt per HTTP eine Datei an den Server zu schicken mittels "multipart/form-data".<br>
    <br>
    HTTP.Post(Aurl, Data);<br>
    <br>
    Inhalt von Data:<br>
    <br>
    Content-type: multipart/form-data, boundary=AB34<br>
    <br>
    --AB34<br>
    content-disposition: form-data; name="name_uploadTest_params"<br>
    <br>
    selectedJob=showFile&state=uploadTest<br>
    --AB34<br>
    content-disposition: form-data; name="button_name_uploadTest"<br>
    <br>
    Upload<br>
    --AB34<br>
    content-disposition: form-data; name="File"<br>
    content-type: text/plain<br>
    <br>
    ...Dateiinhalt...<br>
    <br>
    --AB34--<br>
    <br>
    <br>
    Es wird auf Serverseite jedoch nicht als multipart/form-data erkannt, sondern als "application/x-www-form-urlencoded"<br>
    <br>
    In diversen newsgroup-Beiträgen hab ich gesehen, dass der Typ "multipart/form-data" meist irgendwie gesetzt wird. Leider benutzen diese Leute andere HTTP-Module und ich hab noch nicht herausgefunden wie ich dies im tnmHTTP-Modul setzen kann.<br>
    Vielleicht liegt es auch gar nicht daran.<br>
    Hat jemand Erfahrung mit dieser Form von Upload mit Delphi 5?<br>
    <br>
    Vielen Dank zum Voraus für Eure Hilfe, Thomas

  • #2
    Hallo,

    mit dem folgenden HTML-Formular kann ich über eine mit Delphi <b>6</b> geschriebene ISAPI-DLL eine Datei hochladen:

    <p>&lt;form method=&quot;POST&quot; action=&quot;http://192.168.10.1/ISAPIDebug/IS2ADD.DLL/upload&quot;
    encType=multipart/form-data name=&quot;FrontPage_Form1&quot;&gt;</p>

    Die ISAPI-DLL greift auf das TWebModule von Delphi zurück:
    <pre>
    {_$DEFINE Debug}

    procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var
    sAutor, sPasswd, sRubrik, sTitel, sFile, sPath, sSPRet : String;
    begin
    if Pos('MULTIPART', UpperCase(Request.ContentType)) > 0 then
    with TMultipartContent.Create(TISAPIRequest(Request)) do
    try
    Parse;
    sAutor := Values['DAUTOR'];
    sPasswd := Values['TPASSWD'];
    sRubrik := Values['DRUBRIK'];
    sTitel := Values['TTITEL'];
    if sPasswd <> 'xyz' then
    begin
    Response.SendRedirect(cT_Wrong);
    Exit;
    end;
    ADOConnection1.ConnectionString := cCS;
    ADOConnection1.Connected := True;
    try
    with ADOStoredProc1 do
    begin
    Parameters[1].Value := sAutor;
    Parameters[2].Value := sRubrik;
    Parameters[3].Value := sTitel;
    ExecProc;
    sSPRet := IntToStr(Parameters[0].Value);
    sPath := Parameters[4].Value;
    end;
    finally
    ADOConnection1.Connected := False;
    end;
    sFile := QualifyFileName('..\' + ExtractFileName(sPath));
    Fields['UploadedFile'].SaveToFile(sFile);
    finally
    Free;
    end;
    {$IFDEF Debug}
    Response.Content := Format(cMsg,[sAutor, sPasswd, sRubrik,
    sTitel, sFile, sSPRet]);
    {$ELSE}
    Response.SendRedirect(cT_OK);
    {$ENDIF}
    end;
    </pre&gt

    Comment

    Working...
    X