![Wie kann ich eine Datei direkt auf einen Webserver herunterladen?](https://rvso.com/image/1264380/Wie%20kann%20ich%20eine%20Datei%20direkt%20auf%20einen%20Webserver%20herunterladen%3F.png)
Ich möchte Dateien direkt auf einen gehosteten Server herunterladen, unabhängig davon, ob es sich um einen von mir selbst eingerichteten Server oder einen gehosteten Dienst wie Dropbox handelt.
Wenn ich beispielsweise einen Podcast herunterlade, kann ich ihn nicht auf meinen Computer herunterladen und dann auf den Server hochladen, sondern direkt in die Cloud. Ich möchte den Datenverkehr reduzieren, den ich über einen Datentarif mit Datenvolumen auf meinem Laptop verbrauche, also möchte ich nicht, dass mein Computer als physischer Vermittler fungiert und die Datei zwischenspeichert.
Im Idealfall könnte ich einen Download-Link einrichten und ihn direkt auf meinen Server leiten. Wie kann ich das erreichen?
Mir ist klar, dass diese Frage möglicherweise eine „Webanwendung“ und möglicherweise „Serveradministration“ betrifft, und da es mein Ziel ist, meinen Computer aus der Schleife zu nehmen, kann ich mir vorstellen, dass Leute sagen, dies sei nicht zum Thema und sollte auf einer anderen Site behandelt werden. Mein Problem ist folgendes: Ich weiß nicht, ob dies eine Webanwendungslösung oder eine Serverlösung sein wird, aber ich weiß, dass ich auf jeden Fall einen Computer verwenden werde, um es zu erledigen, und ich ersetze eine Funktion, die derzeit auf meinem Computer ausgeführt wird, also dachte ich, ich stelle sie hier. Wenn ich falsch lag und dies definitiv bei Webanwendungen erscheinen sollte, lassen Sie es mich gerne wissen oder migrieren Sie es einfach.
Antwort1
Sie könnten:
- Stellen Sie per VNC eine Verbindung zum Server her, laden Sie einen Browser und laden Sie die Datei herunter.
- Melden Sie sich per SSH beim Server an und führen Sie im Wesentlichen dasselbe aus, allerdings über die CLI (curl? wget?). Es ist möglich, per SSH einen Remote-Befehl auszuführen; sieheulidtkos Antwort für ein Beispiel hierfür.
- Erstellen Sie eine Anwendung auf dem Server, die URLs von Dateidownloads in eine Warteschlange stellen kann (ein Webdienst?). Sie kann die Warteschlange abfragen und jede Datei herunterladen, bis die Warteschlange leer ist.
Antwort2
Mit CLI ist das unglaublich einfach.
$ URL="http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg" $ ssh-Benutzer@Remote-Host 'wget $URL' --2011-02-05 11:15:10-- http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg upload.wikimedia.org wird aufgelöst... 91.198.174.234 Verbindung zu upload.wikimedia.org|91.198.174.234|:80... wird hergestellt. HTTP-Anfrage gesendet, warte auf Antwort ... 200 OK Länge: 576216 (563K) [image/jpeg] Speichern unter: „Red_Apple.jpg“ 0K .......... .......... .......... .......... .......... 8% 327K 2s 50.000 .......... .......... .......... .......... .......... 17 % 668.000 1 Sek. 100.000 .......... .......... .......... .......... .......... 26 % 1,23 Mio. 1 Sek. 150.000 .......... .......... .......... .......... .......... 35 % 1,23 Mio. 1 Sek. 200.000 .......... .......... .......... .......... .......... 44 % 697.000 0 s 250.000 .......... .......... .......... .......... .......... 53 % 1,15 Mio. 0 s 300.000 .......... .......... .......... .......... .......... 62 % 707.000 0 s 350.000 .......... .......... .......... .......... .......... 71 % 1,13 Mio. 0 Sek. 400.000 .......... .......... .......... .......... .......... 79 % 713.000 0 s 450.000 .......... .......... .......... .......... .......... 88 % 1,13 Mio. 0 s 500.000 .......... .......... .......... .......... .......... 97 % 702.000 0 s 550 K .......... .. 100 % 3,13 M = 0,7 s 05.02.2011 11:15:11 (777 KB/s) – `Red_Apple.jpg' gespeichert [576216/576216]
Dabei kommen zwei wichtige Werkzeuge zum Einsatz:sshUndwget. Die meisten Ausgaben stammen von wget
—, aber es sind Ausgaben der gestarteten wget-Instanzauf dem Remote-Rechner; die Datei wird im user
Home-Verzeichnis von auf gespeichert remote-host
.
Antwort3
Dies hängt davon ab, ob Sie Shared Hosting oder etwas mit mehr Freiheiten verwenden. Wenn Ersteres der Fall ist, wäre es wahrscheinlich ein hässlicher Pfusch.
Wenn Sie einen VPS oder ein anderes Hosting mit praktisch einem eigenen System hätten, könnten Sie einrichten, was Sie brauchen - sagen wir einen Torrent-Client, so etwas wieAbonnierenwenn Sie Vollzugriff und/oder die oben erwähnte SSH/CLI-Clientmethode wünschen (wenn Sie allerdings gelangweilt genug sind, wäre eine Kombination aus Dropbox zum Hochladen der Links auf den Server und einem cleveren Cron-Skript eine wunderbar missbräuchliche Möglichkeit, einem System mitzuteilen, welche Dateien es womit öffnen/herunterladen soll).
Möglicherweise können Sie Ihren Download sogar regelmäßig in Blöcke für den Upload komprimieren, um noch mehr Bandbreite zu sparen.
Antwort4
Erstellen Sie auf dem Zielserver einen Ordner mit dem Namen „Downloads“. Speichern Sie diesen Code in einer .php
Datei und führen Sie ihn auf dem Zielserver aus:
<html>
<form method="post">
<input name="url" size="50" />
<input name="submit" type="submit" />
</form>
<?php
// maximum execution time in seconds
set_time_limit (24 * 60 * 60);
if (!isset($_POST['submit'])) die();
// folder to save downloaded files to. must end with slash
$destination_folder = 'downloads/';
$url = $_POST['url'];
$newfname = $destination_folder . basename($url);
$file = fopen ($url, "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf)
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
?>
</html>