Есть ли способ, которым я могу отправить TFileStream с помощью метода httprequest.post и извлечь его как-то в моем веб-брокере? - PullRequest
2 голосов
/ 07 мая 2019

Я пытаюсь разрешить клиентам загружать файлы pdf / xls и jpg на мой запущенный сервер веб-брокера.Я думаю, что отправляю правильный контент, но не знаю, как извлечь полученные данные.Я не могу найти подходящий метод, чтобы позволить мне сделать это.Я использую предоставленный метод Delphi httprequest.post для подключения к серверной части сервера.

Ниже фрагмента кода:

Клиент

try
      NetHTTPClient.ContentType := 'application/pdf';
      //NetHTTPRequest.ResponseTimeout := 600000;
      tmpPDFFile := TFileStream.Create(pFilename, fmOpenRead);
      //tmpPDFFile.Position:=0;
      GetDossierIDAndDagboek;
      tmpURL := MyURL + 'uploadAnyFile' + '?key=' + MyAPIKey + '&CLID=' + MyCLID + '&DOSID=' + tmpDOSID + '&JOURNAL=' + tmpDagboek + '&FILETYPE=' + pFileExstension;
      NetHTTPRequest.ContentStream := tmpPDFFile;
      NetHTTPRequest.Post(tmpURL,tmpPDFFile);



      if HTTPLastStatusCode = 500 then begin
        WriteToLog('Er ging iets mis bij het verwerken van document ' + pFilename);
      end;

      if HTTPLastStatusCode = 200 then begin
        DeleteFile(pFilename);
      end;

    except
      on e : exception do begin
        WriteToLog(e.Message);
      end;
    end;

Сервер

procedure TWebModule1.WebModule1UploadAnyFileAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  tmpJournal, tmpFileType : string;
  tmpCLID, tmpDOSID : integer;
  tmpStream : TFileStream;
  tmpStr:string;
  tmpX:integer;
begin
try
    Handled := true;
    Response.StatusCode := 200;

    tmpCLID := StrToInt(Request.QueryFields.Values['CLID']);
    tmpDOSID := StrToInt(Request.QueryFields.Values['DOSID']);
    tmpJournal := Request.QueryFields.Values['JOURNAL'];
    tmpFileType := Request.QueryFields.Values['FILETYPE'];

    CodeSite.Send('bestand opgeslagen');

    request.Files.Count;
    tmpStream := Response.ContentStream;

   // TmpStream := request.ReadString;


    if tmpFileType = 'pdf' then begin
      //tmpStr.SaveToFile('c:\temp\test.pdf');
    end;

    if (tmpFileType = 'jpeg') OR (tmpFileType = 'jpg') then begin


    end;

    if (tmpFileType = 'xlsx') OR (tmpFileType = 'xls') then begin


    end;


  except
    on e : exception do begin

    end;

  end;
end;
...