PHP: Download einer Datei vom web zum lokalen Rechner
Suchte ich im web für 2 Tage und kann keine Antwort finden.
Ich versuche, eine routine zu kreieren, die zeigt die Dateien auf eine Website, die ich Steuern, und ermöglicht dem Benutzer das laden einer ausgewählten Datei auf einem lokalen Laufwerk.
Ich bin mit dem code unten. Wenn ich kommentieren Sie die echo-Anweisungen, zeigt es die korrekte Quell-und Ziel-Verzeichnisse, die richtige Dateigröße zu, und das echo nach dem fclose zeigt WAHR.
Wenn ich echo die Quelldatei ($data), es zeigt den korrekten Inhalt.
$FileName-variable enthält den korrekten Dateinamen, die entweder .doc/.docx oder .pdf. Ich habe beide getestet und weder speichert nichts in das Ziel-Verzeichnis, oder sonst irgendwo auf meiner Maschine.
Den source-Pfad ($path) hinter einem login, aber ich bin bereits eingeloggt.
Irgendwelche Gedanken auf, warum dies fehlschlägt, die Datei zu schreiben?
Dank,
Hank
Code:
$path = "https://.../Reports/ReportDetails/$FileName";
/* echo "Downloading: $path"; */
$data = file_get_contents($path); /* echo "$data"; */
$dest = "C:\MyScans\\".$FileName; /* echo "<br />$dest"; */
$fp = fopen($dest,'wb');
if ( $fp === FALSE ) echo "<br />Error in fopen";
$result = fwrite($fp,$data);
if ( $result === FALSE ) echo "<br />Can not write to $dest";
/* else echo "<br />$result bytes written"; */
$result = fclose($fp); /* echo "<br />Close: $result"; */
InformationsquelleAutor Hank | 2012-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke (!) Sie sind ein bisschen verwirrt.
Sie erwähnt
Aber der Weg
"C:\MyScans\\".$FileName
ist ist der Pfad auf dem webserver, nicht den Weg auf den eigenen computer.Nachdem Sie tun, was Sie zum abrufen der gewünschten Datei von der remote-website:
header('Location: /path/to/file.txt');
Legen Sie die folgenden header:
header('Content-disposition: attachment; filename=path/to/file.txt');
Es zwingt die Benutzer, um die Datei herunterzuladen. Und das ist wahrscheinlich das, was Sie tun möchten
Hinweis: ich habe die Erweiterung
txt
, aber Sie können jede ErweiterungAber jetzt finde ich, dass die Dateien (in der Regel .pdf), die sind in Ordnung auf dem Server beschädigt sind, auf meinem Rechner. Sie zeigen feine vom webserver, aber ich erhalten eine "Datei beschädigt und kann nicht repariert werden' - Meldung auf meinem Rechner zu Hause. Auch die Dateigröße hat sich von 44 KB 57 KB. Könnte es sein, dass es das hinzufügen von header-Informationen in die Datei? (Das gleiche geschah mit ein .docx-Datei.)
Ich bin froh, dass ich Ihnen geholfen. dein letztes problem sollte eine andere Frage sein. Ich denke, dass das problem mit der Codierung. versuchen Sie, fügen Sie
utf8_encode()
.Nadav, Es stellt sich heraus, dass die zusätzlichen Inhalte Hinzugefügt, um das Ende der heruntergeladenen Datei war, die html-code-Ausgang auf der web-Seite, nachdem die Datei übertragen wurde (ich zeige dem Benutzer eine Liste der verfügbaren Dateien zum download; klicken Sie auf, und es wird heruntergeladen, dann wieder in die Liste). Ich brauchte ein ob_start() vor und ob_end_flush() nach, damit dies nicht passieren. Vielen Dank für Ihre Hilfe. --Hank
InformationsquelleAutor Nadav S.
können Sie php Curl:
InformationsquelleAutor Julien