AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP]ftp_get will nicht so wie ich es will
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP]ftp_get will nicht so wie ich es will

Ein Thema von Luckie · begonnen am 3. Nov 2005 · letzter Beitrag vom 4. Nov 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 22:29
Ich versuche mit ftp_get eine Datei runterzuladen und lokal zu speichern, wie es ja angeblich möglich sein soll.

Implementiert ist das so:
Code:
      case '7':
        echo '<h3>Download file</h3>';
        echo '

';
        $path_parts = pathinfo($downloadfile);
        $filename = $path_parts["basename"];
        $destfile = $localdir.'\\'.$filename;
        $sourcefile = $newpath.'/'.$downloadfile;
        if (!@download_file($destfile , $sourcefile, FTP_BINARY))
        {
          echo 'Error!
';
          echo 'File [i]'.$sourcefile.'[/i] could not be save in [i]'.$destfile.'[/i]';
        }
        else
        {
          echo 'File [i]'.$sourcefile.'[/i] successfully downloaded in [i]'.$destfile.'[/i]';
        }
        echo '</p>';
        break;
Code:
function download_file($dest, $source, $mode)
    {
      $conn = ftp_connect(SERVER);
      ftp_login($conn, USER, PW);
      $result = ftp_get($conn, $dest, $source, $mode);
      ftp_close($conn);
      return $result;
    }
In $destfile steht dann so was drinne: d:\foobar.txt und in $sourcefile steht auch was gescheites drinne. Nur ladet die Datei nicht auf meiner loaklen Festplatte, sondern wieder auf dem Server in dem Verzeichnis, wo das Script ausgeführt wird unter dem Dateinamen, der in $destfile angegeben ist, also d:\foobar.txt heißt die datei dann.

Aber wenn das Hochladen vom lokalen Rechner geht, dann muss doch auch das Runterladen gehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#2

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 22:32
die datei muss schon geoeffnet sein. so stehts aber auch in der doku... es wird ein filehandle verlangt.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 22:35
Sorry falsche Funktion verlinkt. das, was du sagst trifft auf ftp_fget zu, ich benutze aber ftp_get.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#4

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 22:46
es ist klar, dass die datei auf dem server gespeichert wird, auf dem auch php laeuft.

runterladen geht ueber den browser, also musst du die datei im php script ausgeben.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 22:50
Das wollte mir auch alle bei ftp_put erklären und haben gesagt, das Script hätte keinen Zugriff auf meinem lokalen Rechner, um die Datei hochzuladen, letzt endlich ging es aber doch. Also muss es auch andersrum gehen. Ich habe nur noch nicht rausgefunden, was ich anders bzw. falsch mache.

Außerdem steht da ja:
Zitat:
Liest eine Datei von einem FTP-Server und speichert sie lokal (download)
Und lokal bedeutet für mich: 'hier bei mir und nicht auf dem Sever, wo das Script läuft'. Desweiteren habe ich schon Scripte gesehen und ausprobiert, die das auch konnten. Nur leider kann ich nicht nachvollziehen, was die anders machen als ich.

Also hört auf mir zu erzählen, dass das nicht ginge.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 23:07
ähm...

Luckie, ich will ja nicht rechthaberisch wirken, aber für ein PHP-Skript ist "lokal" der Server, auf dem es läuft. Der User kriegt nur, was der Browser kriegt, und der Browser kriegt nur, was du ihm per header, echo, print oder sonstigem zukommen lässt.

stell dir mal vor, ich bau mir ein php-skript, und bei jedem, der es ausführt landet einfach so "1337_virus.exe" im verzeichnis D:\

Du musst ein wenig anders an die Sache rangehen

downloaden geht nur mit
Code:
header("Content-Type: application/octet-stream");
und anschließendem durchspulen des codes. ausser du verweist den browser auf eine tatsächlich existierende datei auf dem server.

Das hier:

Zitat:
Das wollte mir auch alle bei ftp_put erklären und haben gesagt, das Script hätte keinen Zugriff auf meinem lokalen Rechner, um die Datei hochzuladen, letzt endlich ging es aber doch.
Halte ich für ein gerücht, ohne uploadform, $_FILES[] und move_uploaded_file geht da gar nix. Echt nicht. Du musst da was falsch verstanden haben. (Copy&Paste? Na? Na? Na? )

bitte nicht falsch verstehen, aber es macht Spaß zu sehen, dass auch Mods nicht allwissend sind

Im übrigen sehe ich keinen Sinn darin, etwas per FTP zu holen und dann dem user zu geben - verlinke da besser direkt auf eine Datei, hol sie direkt vom Filesystem des Servers, wenn es der gleiche ist, oder verweise den Browser auf die Datei.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 23:10
OK, gegenbeweis, hier mein Upload-Code:
Code:
    function upload_file($dest, $source, $mode)
    {
      $conn = ftp_connect(SERVER);
      ftp_login($conn, USER, PW);
      $result = ftp_put($conn, $dest, $source, $mode);
      ftp_close($conn);
      return $result;
    }
Code:
echo '<h3>Upload file</h3>';
          echo '

';
          if ($_FILES['uploadfile']['size'] < $MAX_FILE_SIZE)
          {
            if (!@upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY))
            {
              echo 'Error!'.'
';
              echo 'File [i]'.$_FILES['uploadfile']['name'].'[/i] could not be saved in [i]'.$newpath.'[/i]';
              echo $_FILES['uploadfile']['error'];
            }
            else
            {
              echo 'File [i]'.$_FILES['uploadfile']['name'].'[/i] successfully saved in [i]'.$newpath.'[/i]
';
            }
            }
            else
            {
              echo 'The filesize of '.$_FILES['uploadfile']['name'].' ('.format_filesize($_FILES['uploadfile']['size']).') exceeds the allowed filesize of '.format_filesize(MAX_FILE_SIZE);
            }
Nichts mit move_uploaded_file .

Und es soll ein WebFTP Client für mich werden und es gibt Verzeichnisse außerhalb des Documentroot-Folders, an die ich mit dem Browser nicht drankomme, aber mit einem FTP-Client. Und an die möchte ich natürlich auch mit meinem WebFTP Client drankommen.

Desweiteren bedeutet bei ftp_put lokal auch wirklich lokal:
Zitat:
int ftp_put ( int ftp_stream, string remote_file, string local_file, int mode )
Und es sind ja explizit FTP-Funktionen, also es ist das FTP Protokoll, was dazu geschaffen wurde Dateien zwischen Rechnern auszutauschen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#8

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 23:11
definition: lokal heisst auf sem server.

uploads und downloads laufen NUR ueber den browser.
upload:
auswahl der datei im browser.
browser sendet datei an script.
script speichert datei in einem /tmp verzeichnis.
im script verschiebt eine funktion diese tmpdatei an den entgueltigen ort.

download:
(hier wuerde dein ftp kram an die reihe kommen: datei vom ftp laden und aufm webserver speichern)
script liest datei (auf dem server) und gibt diese daten an den browser aus.
browser entscheidet, ob zum download anbieten oder anzeigen.

ich hab das alles schon mal gemacht und bin mir sicher, dass es nur so ablaeuft.

offtopic: luckie, ich hoffe du erinnerst dich an diesen thread, wenn ein anfaenger mal wieder deine nerven strapaziert. du machst es uns (mir jedenfalls) nicht leichter, indem du manche dinge einfach als gegeben ansiehst oder "lokal bin ich, nicht der server" sagst.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 23:27
Ok, Luckie, das move_uploaded_file fehlt nur, weil dus eben per FTP gleich hochlädst. Was bei einem WebFTP ja auch sinnvoll ist. Du greifst aber trotzdem auf $_FILES zu, das heisst, die Datei kommt vom Browser per POST-Anfrage in das temp-verzeichnis des webservers, das PHP-Script kriegt per $_FILES den pfad, und lädt das ganze dann auf einen FTP-Server hoch. es existiert zwischen Browser und Server also keine vom PHP-Skript "ausgelöste" FTP-Verbindung. Quod erat demonstrandum.

Dass du beim WebFTP auch beim Download wieder die zwischenstation über den Webserver gehen musst, ist dann natürlich klar. also Vom FTP-Server zum Skript und von da zum browser. am besten per ftp_get, das stimmt. und von da aus dann per readfile, die spult dir eine komplette datei an den browser durch. Eventuell musst du vorher noch die header senden. ftp_get sollte dir ja direkt die datei im dateisystem des Webservers anlegen, diese kannt du dann durchspulen. wenn du einen Datezeiger hast, kannst du auch fpassthru nehmen. und danach das löschen der temporären datei nicht vergessen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 3. Nov 2005, 23:52
Zitat von DGL-luke:
Dass du beim WebFTP auch beim Download wieder die zwischenstation über den Webserver gehen musst, ist dann natürlich klar. also Vom FTP-Server zum Skript und von da zum browser. am besten per ftp_get, das stimmt. und von da aus dann per readfile, die spult dir eine komplette datei an den browser durch. Eventuell musst du vorher noch die header senden. ftp_get sollte dir ja direkt die datei im dateisystem des Webservers anlegen, diese kannt du dann durchspulen. wenn du einen Datezeiger hast, kannst du auch fpassthru nehmen. und danach das löschen der temporären datei nicht vergessen.
Ächtz. Kannst du mir da mal bitte ein Beispiel geben?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:57 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