AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

HTTP oder FTP für Downloads?

Ein Thema von BlueStarHH · begonnen am 15. Okt 2013 · letzter Beitrag vom 15. Okt 2013
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.343 Beiträge
 
Delphi 12 Athens
 
#1

AW: HTTP oder FTP für Downloads?

  Alt 15. Okt 2013, 09:48
Mir ist nur aufgefallen, dass so gut wie überall, wo man Sofware laden kann, HTTP genutzt wird.
Das liegt nur daran, weil es einfach ist.

HTTP ist bei Webseiten nunmal schon offen, um die Webseite anzuzeigen.
Bei FTP müßte man erst einen Gastzugang einrichten, welcher ohne Passwort, geheimen Nutzernamen und vorallem mit Nur-Lese-Rechten versehen ist.


FTP scheint (vermutlich außerhalb der spezifikation und nicht bei allen FTP-Servern auch Teilweise Down-/Uploads zu unterstüzen ... jedenfalls glaube ich mich zu erinnern, dß der Filezilla sowas kann.


Wird die Datei würklich nur vom HTTP-Server rausgegeben, oder arbeitet da im Hintergrund z.B. noch PHP, CGI oder sowas, welches den Dateizugriff überwacht?
Da kann z.b. ein Timeout bei der Scriptausfühung zuschlagen, wenn der Download langsam ist.
Und was vorallem PHP-Scripte gern mal vergessen, also z.B. die Dateigröße im Header anzugeben, da kann bei kurzen Downloadverzögerungen der Browser schnell mal denken die Datei ist fertig, da er dann auf das Streamende wartet, anstatt zu warten, bis genügend Bytes eingetroffen sind.



Ach ja, FTP "lesen" kann eigentlich nahezu jeder Browser. (der FF kann schreiben nur via Plugin und der IE konnte früher auch mal von sich aus schreiben, aber das hat der irgendwann verlernt )
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Okt 2013 um 09:50 Uhr)
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: HTTP oder FTP für Downloads?

  Alt 15. Okt 2013, 11:28
Wird die Datei würklich nur vom HTTP-Server rausgegeben, oder arbeitet da im Hintergrund z.B. noch PHP, CGI oder sowas, welches den Dateizugriff überwacht?
Da kann z.b. ein Timeout bei der Scriptausfühung zuschlagen, wenn der Download langsam ist.
Und was vorallem PHP-Scripte gern mal vergessen, also z.B. die Dateigröße im Header anzugeben, da kann bei kurzen Downloadverzögerungen der Browser schnell mal denken die Datei ist fertig, da er dann auf das Streamende wartet, anstatt zu warten, bis genügend Bytes eingetroffen sind.
Es wird ein simples Pearl-CGI-Script verwendet, dass den Download zählt und ihn dann wie folgt ausführt:
Code:
print "Location: $DL\n\n";
$DL ist die Download-URL. Also müsste man Deiner Aussage nach es so abändern und die Probleme wären weg:

Code:
print "Content-Type: application/octet-stream\n";
print "Content-Length: ".$fileSize."\n";
print "Location: $DL\n\n";
Auf die schnelle gegoogelt. Kann man dann noch Location nutzen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.343 Beiträge
 
Delphi 12 Athens
 
#3

AW: HTTP oder FTP für Downloads?

  Alt 15. Okt 2013, 11:50
Location ist doch eine Umleitung (wenn ich mich jetzt richtig erinnere), dann dürfte der Browser nach diesem CGI-Sctipt dann die Datei anhand der übergebenen DL-Adresse neu beim Server anfordern und dann hoffentlich direkt vom HTTP-Server abrufen.

Eventuell erkennt man im Log des HTTP-Servers, warum die Downloads abbrechen?





In PHP sieht man oftmals nur sowas (sehr oft ohne Content-Length, Content-Disposition usw.),
Code:
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($dir.$file);
wo die "richtige" Dateiadresse nicht verraten wird (bei dem Location könnte man die eigentlich Datei-URL auslesen und dann an dem Downloadscript vorbei die Datei direkt laden. Also wenn man dann diese URL an Andere weitergibt, dann würden diese nicht mehr mitgezählt.

Hier bleibt das PHP-Script so lange aktiv, bis der Download fertig ist und die Verbindung getrennt wurde.
Wenn der Downlod nun zu lange dauert, dann kann ein Timeout im PHP-Server das Script und damit den Download abbrechen.


Wenn im HTTP-Log nichts zu finden ist...
Zumindestens dieses PHP-Script kann man so erweitern, daß es mitlogt, ob/wann die Verbindung clientseitig getrennt wurde, bzw. ob das Scripttimeout oder eine andere Exception zugeschlagen hat.
Gent eventuell geht das auch mit CGI, wenn man dort die Datei ebenfalls direkt ausliefert, aber mit CGI hab ich noch nie was gemacht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Okt 2013 um 12:06 Uhr)
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#4

AW: HTTP oder FTP für Downloads?

  Alt 15. Okt 2013, 12:44
In PHP sieht man oftmals nur sowas (sehr oft ohne Content-Length, Content-Disposition usw.),
Code:
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($dir.$file);
Dieser PHP Code ist leider einer der meist genutzten. Doch leider gehen hier viele Funktionen wir HTTP-Range usw. nicht. Die Browser, wie du schon schreibst, haben Aufgrund der fehlenden Header auch so ihre Probleme.

Ich würde die Datei auf jedenfalls NICHT durch ein Script ausliefern lassen, es sein denn man weiß zu 100% was man da tut.
Der Webserver kann das meist besser und hat auch die passenden Unterstützungen wie Range etc.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  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 07:59 Uhr.
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