Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] PHP Funktion aus Formular aufrufen (https://www.delphipraxis.net/55720-%5Bphp%5D-php-funktion-aus-formular-aufrufen.html)

Luckie 25. Okt 2005 23:40

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Also, ich habe es jetzt so:
Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      $file = fopen($_FILES['uploadfile']['tmp_name'], 'r');
      upload_file($newpath, $file, FTP_BINARY);
      $_POST['sent'] = '0';
    }
  ?>
  <form ENCTYPE="multipart/form-data" ACTION="<?=$_SERVER['PHP_SELF'].'?newpath='.$newpath ?>" METHOD=POST>
    <input type="hidden" name="sent" value="1">
    <input NAME="uploadfile" SIZE=75 TYPE="file">
    <input TYPE="submit" VALUE="Send File">
  </form>
Als Fehlermeldung kommt:
Zitat:

Warning: ftp_put() expects parameter 3 to be string, resource given in /var/www/l3s11195/html/Ablage/Privat/WebFTP.php on line 83
Zeile 83 wäre:
Code:
$result = ftp_put($conn, $dest, $source, $mode);
ist ja auch logisch, fopen gibt ja ein Dateihandle zurück, da müsste aber der Pfad und der Name der lokalen Datei stehen. Wie bekomm eich den aus dem Formular raus?

Hardgecodet:
Code:
upload_file($newpath.'\style.css', 'H:\Downloads\style.css', FTP_BINARY);
kommt die Meldung:
Zitat:

Warning: ftp_put(): Unable to access H:\Downloads\style.css in /var/www/l3s11195/html/Ablage/Privat/WebFTP.php on line 83

faux 25. Okt 2005 23:47

Re: [PHP] PHP Funktion aus Formular aufrufen
 
:oops:

Sorry. Hab gerade ftp_fput() mit ftp_put() verwechselt. DU hast natürlcih recht, dass 1. die Argumente richtig waren und 2. kein Dateizeiger sondern ein String mit dem Pfad erwartet wird.

Luckie 25. Okt 2005 23:53

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Roter Kasten.

Woran kann es jetzt liegen, dass er auf die Datei keinen Zugriff hat? Und wie komme ich an den Text aus dem Edit des Formulares?

Puh, das wird eine schwere Geburt. Aber dann ist für heute auch schluss. Versprochen. ;)

faux 26. Okt 2005 00:00

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Zitat:

Zitat von Luckie
Hardgecodet:
Code:
upload_file($newpath.'\style.css', 'H:\Downloads\style.css', FTP_BINARY);
kommt die Meldung:
Zitat:

Warning: ftp_put(): Unable to access H:\Downloads\style.css in /var/www/l3s11195/html/Ablage/Privat/WebFTP.php on line 83

Wieso H:\? Das ist doch ein Windows-Verzeichnis, wies aussieht, (/var/www/l3s11195/...) hast du aber einen LINUX-Server...:?

Probiere mal so:
upload_file($_FILES['uploadfile']['tmp_name'], '/style.css', FTP_BINARY);

Dann müsste die Datei direkt aus dem Temp-Verzeichnis auf den FTP geladen werden, und zwar mit dem Namen style.css. (Wieso gerade style.css, dann wird ja immer die Datei überschrieben).

Luckie 26. Okt 2005 00:05

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Logisch, ich will ja eine Datei von meinem lokalen Rechner auf meinen Webspace laden. Und den Dateinamen habe ich nur erstmal hardgecodet, um zu probieren, ob es überhaupt funktioniert. Das soll natürlich nicht so bleiben.

Zitat:

Dann müsste die Datei direkt aus dem Temp-Verzeichnis auf den FTP geladen werden
Und wie kommt die dort hin? Also wenn man über das Temp-Verzeichnis geht, dann würde ich mir das so vorstellen: mit ftp_put lade ich sie in das Temp-Verzeichnis und mit move_uploaded_file würde ich sie dann in das eigentliche Zielverzeichnis verschieben.

Aber egal wie, später irgendwann muss ich ja auf den Text aus dem Eingabefeld zugreifen, wie komme ich da dran?

faux 26. Okt 2005 00:07

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Zitat:

Zitat von Luckie
Aber egal wie, später irgendwann muss ich ja auf den Text aus dem Eingabefeld zugreifen, wie komme ich da dran?

Asooo... Du meinst das FILE-Feld? Das erreichst du wie gesagt über $_FILES. Oder meinst du ein anderes Feld?

Flocke 26. Okt 2005 07:14

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Zitat:

Zitat von Luckie
Logisch, ich will ja eine Datei von meinem lokalen Rechner auf meinen Webspace laden. Und den Dateinamen habe ich nur erstmal hardgecodet, um zu probieren, ob es überhaupt funktioniert. Das soll natürlich nicht so bleiben.

Luckie :roll:
PHP wird auf dem Server ausgeführt - der weiß nichts von deinen lokalen Verzeichnissen. Wenn du die Datei in einer form als Upload-Feld definiert hast, dann ist deren Inhalt zusammen mit der Anfrage schon auf den Rechner übertragen worden und steht jetzt eben in der angesprochenen temporären Datei.

Du machst jetzt also einen FTP-Upload vom Server auf den Server (derselbe Rechner), um die Save-Mode-Restriktionen zu umgehen.

Luckie 26. Okt 2005 09:28

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt verstehe ich gar nichts mehr. :? Wie kann eine 5 MB Datei, die ich mit "Durchsuchen" ausgewählt habe, nach Schließen des Dialoges schon auf dem Server sein? Das PHP auf dem Server ausgeführt wird ist mir klar, aber wenn da steht, dass man mit dftp_put eine Datei hochladen kann, dann verstehe ich darunter vom lokalen Rechner auf den Server. Die anderen FP-Scripte haben auch mit FTP-put gearbeitet:

Code:
switch ($action) {
case 'upload':
$r = $ftp->put(
$dir.$_upload['uploadfile']['name'],
$_upload['uploadfile']['tmp_name']);
if ($r) {
echo 'Fileupload erfolgreich';
 } else {
echo 'Fileupload leider fehlgeschlagen';
}
Code:
function put ( $file, $sourcefile ) {
return ftp_put(
$this->conn,
$file,
$sourcefile,
FTP_BINARY);
}
das mal der Code aus einem Script, aber ich habe das nicht zusammengebracht, deswegen habe ich hier gefragt. Das ganze Script mal im Anhang.

Gerade habe ich das hier gefunden:
HTML-Datei:
Code:
<html>
<head>
<title>Datei Upload</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
   <h1>Schicken Sie uns ihre Texte</h1>
   <form action="ftpbeispiel.php" enctype="multipart/form-data" method="POST">
      

 W&auml;hlen Sie eine Textdatei (txt, html usw.)
      von Ihrem Rechner aus:


      <input name="lokale_datei" type="file"
      size="50" maxlength="1024" accept="text/*">
      </p>
      

Verzeichnis/Zieldatei


      <input type="text" name="zieldatei">
      </p>
      



      <input type="submit" name="Abschicken"
      value="Abschicken">
      </p>
   </form>
</body>
</html>
PHP-Datei:
Code:
<?php
// Diese Variablen bitte aendern
$ftp_server = "luckie-online.de";
$benutzername = "foo";
$passwort = "bar";

// Die Verbindung herstellen
$connection_id = ftp_connect("$ftp_server");

// Mit Benutzername und Kennwort anmelden
$login_result = ftp_login($connection_id, "$benutzername", "$passwort");

// überprüfen ob alles gutgegangen ist
if ((!$connection_id) || (!$login_result)) {
   echo "<H1>Ftp-Verbindung nicht hergestellt!<H1>";
   echo "

Verbindung mit ftp_server
   als Benutzer $benutzername nicht möglich!</p>";

   die;
} else {
   echo "

Verbunden mit ftp_server als Benutzer $benutzername </p>";
}
// Hochladen der datei
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);

// Upload-Status überprüfen
if (!$upload) {
   echo "

Ftp upload war fehlerhaft!</p>";
} else {
   echo "

Datei $slokale_datei auf $host als $zieldatei geschrieben </p>";
}

// Schließen der Verbindung
ftp_quit($connection_id);
?>
Das funktioniert wunderbar, aber was anderes mache ich doch auch nicht. :wall:

Luckie 26. Okt 2005 10:57

Re: [PHP] PHP Funktion aus Formular aufrufen
 
So, ich habe es jetzt geschaft. :)

Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      echo '<pre>';
      $destfile = 'test.xyz';
      echo $uploadfile;
      upload_file('/'.$newpath.'/'.$destfile, $uploadfile, FTP_BINARY);
      echo '</pre>';
    }
  ?>
  <form ENCTYPE="multipart/form-data" ACTION="<?=$_SERVER['PHP_SELF'].'?newpath='.$newpath ?>" METHOD=POST>
    <input type="hidden" name="sent" value="1">
    <input NAME="uploadfile" SIZE=75 TYPE="file">
    <input TYPE="submit" VALUE="Send File">
  </form>
Nur einen Haken hat es. echo $uploadfile ergibt:
Zitat:

/var/www/l3s11195/phptmp/phpZb1pCQ
Aber wie komme ich an den Dateinamen dran, wie er lokal lautet?

Habs:
Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      echo '<pre>';
      upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY);
      echo '</pre>';
    }
  ?>
  <form ENCTYPE="multipart/form-data" ACTION="<?=$_SERVER['PHP_SELF'].'?newpath='.$newpath ?>" METHOD=POST>
    <input type="hidden" name="sent" value="1">
    <input NAME="uploadfile" SIZE=75 TYPE="file">
    <input TYPE="submit" VALUE="Send File">
  </form>
Nur noch eins, wenn ich die Seite aktualisiere mit F5, dann will er wieder was hochladen, kann ich das $_POST['sent'] == '1' irgendwie wieder zurücksetzen?

Und wenn ich ein zweites Formular habe, kann ich dann dies machen:
Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      echo '<pre>';
      upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY);
      echo '</pre>';
    }
    else if ($_POST['sent'] == '2')
    {
       deletefile(...);
    }
  ?>
Nur noch diese Kleinigkeit und ich bin super glücklich. :angel:

Flocke 26. Okt 2005 11:16

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Zitat:

Zitat von Luckie
Wie kann eine 5 MB Datei, die ich mit "Durchsuchen" ausgewählt habe, nach Schließen des Dialoges schon auf dem Server sein?

Die Datei wird erst übertragen wenn du das Formular abschickst.

Zitat:

Zitat von Luckie
Nur einen Haken hat es. echo $uploadfile ergibt:
Zitat:

/var/www/l3s11195/phptmp/phpZb1pCQ
Aber wie komme ich an den Dateinamen dran, wie er lokal lautet?

Wie oben geschrieben - das ist die übertragene Datei - die liegt schon auf deinem Server.

Jetzt überleg' noch mal
1. wie soll der Webserver denn auf eine Datei auf deiner Platte kommen
2. wie soll ein FTP-Kommando, dass auf dem Server abgesetzt wird, eine Datei von deiner Platte übertragen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz