AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Dateiupload direkt zum PHP-Script
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiupload direkt zum PHP-Script

Ein Thema von Hobbycoder · begonnen am 30. Aug 2024 · letzter Beitrag vom 30. Aug 2024
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#1

Dateiupload direkt zum PHP-Script

  Alt 30. Aug 2024, 10:58
Hi,
ich möchte unterschiedliche Dateien auf meinen Webserver hochladen in unterschiedliche Verzeichnisse (nicht zwingend). Dabei soll die Datei auf dem Server einen anderen Namen bekommen als der lokale Dateiname. Aber ich scheitere bereits am Upload.

Was ich bisher habe:
Delphi:
Delphi-Quellcode:
procedure TThreadUpload.Execute;
var
  http: TIdHTTP;
  ss: TStringStream;
  s: string;
  I: Integer;
  DS: TIdMultiPartFormDataStream;
  Failed: Boolean;
begin
  http:=TIdHTTP.Create(nil);
  ss:=TStringStream.Create;
  Failed:=False;
  try
    try
      for I := 0 to FFileList.Count-1 do
      begin
        s:='http://'+FServername+'/UploadInstallFiles.php';
        s:=TIdURI.URLEncode(s);
        DS:=TIdMultiPartFormDataStream.Create;
        try
          DS.AddFile('fileToUpload', FFileList[i].DestinationFilePath+FFileList[i].DestinationFileName, 'application/octet-stream');
          http.Request.ContentType:='multipart/form-data; boundary='+DS.Boundary;
          http.Request.AcceptEncoding:='';
          http.Request.Accept:='';
          http.Request.Host:='';
          http.Request.UserAgent:='';
          http.HandleRedirects := True;
          http.Put(s, DS, ss);
        finally
          DS.Free;
        end;
        DoRequestResponse(SS.DataString);
        if http.ResponseCode=200 then
        begin
          s:=ss.DataString;
          if Pos('has been uploaded', s)>0 then
          begin
            DoSuccess(FFileList[i].DestinationFilePath+FFileList[i].DestinationFileName, FUploadFileType);
          end else begin
            DoFailed(FUploadFileType);
            Failed:=True;
          end;
        end else begin
          DoFailed(FUploadFileType);
          Failed:=True;
        end;
        if Failed then Break;
      end;
    except
      DoFailed(FUploadFileType);
    end;
  finally
    http.Free;
    ss.Free;
    DoFinished(FUploadFileType, Failed);
  end;
end;
PHP:
Code:
<?php
$target_dir = "Install/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
print_r($_FILES);

if(isset($_POST["submit"])) {
   $uploadOk = 0;
}

if (file_exists($target_file)) {
  unlink($target_file);
}

if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
} else {
  echo 'Filename: '.$_FILES["fileToUpload"]["tmp_name"].'<br/>';
  echo 'Targetfilename: '.$target_file.'<br/>';
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>
Vom Server kommt 'Array'#$A'('#$A')'#$A'Filename: <br/>Name: Targetfilename: Install/<br/>Sorry, there was an error uploading your file.'

Ich bin ein bisschen Ratlos, woran's liegt. Irgendwas ist da wohl in dem MultipartFormdata noch nicht korrekt eingestellt.
Außerdem müsste ich ja noch ein weitere Parameter mit dem Dateinamen auf den Webserver übergeben, denn die Dateien sollen ja dort einen anderen haben. Das habe ich aber erst mal nach hinten geschoben, weil ja der Fileupload erst mal funktionieren muss.

Vielleicht hat einer die Muße sich das mal anzuschauen.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (30. Aug 2024 um 12:35 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#2

AW: Dateiupload direkt zum PHP-Script

  Alt 30. Aug 2024, 11:30
Ersten Fehler gefunden: Wenn man POST auswerten will, sollte man auch POST abschicken

Jetzt kommt schon mal ein

'Array'#$A'('#$A' [fileToUpload] => Array'#$A' ('#$A' [name] => echo.exe'#$A' [full_path] => echo.exe'#$A' [type] => application/octet-stream'#$A' [tmp_name] => /tmp/phpa0XEjU'#$A' [error] => 0'#$A' [size] => 8192'#$A' )'#$A#$A')'#$A'Filename: /tmp/phpa0XEjU<br/>Name: Targetfilename: Install/echo.exe<br/>Sorry, there was an error uploading your file.'

zurück.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
263 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Dateiupload direkt zum PHP-Script

  Alt 30. Aug 2024, 14:37
Siehe hier:
https://stackoverflow.com/questions/...ver-delphi-php
Gruß
Dirk
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#4

AW: Dateiupload direkt zum PHP-Script

  Alt 30. Aug 2024, 14:59
Läuft ja jetzt. Mein Fehler war ja, dass ich in Delphi versehendlich noch http.put stehen hatte und das immer übersehen habe.
Natürlich ging's dann mit den weiteren Parameter ohne Probleme.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz