AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Upload großer Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Upload großer Dateien

Ein Thema von OlliWW · begonnen am 10. Sep 2020 · letzter Beitrag vom 14. Sep 2020
Antwort Antwort
OlliWW

Registriert seit: 31. Aug 2011
155 Beiträge
 
#1

Upload großer Dateien

  Alt 10. Sep 2020, 09:00
Hallo,

Ich möchte aus meiner Anwendung per HTTP(s) Dateien auf meinen Webserver übertragen. Diese Dateien sind sehr groß (immer < 1 GB, bis zu 20 GB).

Nun könnte ich mit den Indy HTTP Komponenten einfach einen Stream "Posten" und so die Daten an meinen Webserver übergeben. Ich habe nun allerdings schon vielfach gelesen, dass es bei großen Dateien zu Problemen mit der Dateigröße kommt, da diese dann zunächst in den Arbeitsspeicher geladen wird und dann in einem Stück gepostet wird.

Kennt jemand einen guten Weg, große Dateien per HTTPS zu übertragen? Vielleicht eine Komponenten die die File in Chunks aufteilt oder ähnliches?

Andere Protokolle (FTP, SFTP,...) kommen leider nicht in Frage.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.115 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Upload großer Dateien

  Alt 10. Sep 2020, 09:13
Ohne wirklich etwas in der Richtung gemacht zu haben würde ich behaupten dass die angesprochenen Probleme daher kommen, wenn man die Dateien (die ja schon irgendwo auf der Platte liegen) wirklich mit Methoden wie LoadFromFile(..) oder ähnliches reinlädt oder an Indy übergibt.

Ich habe mit Indy nie viel gemacht, aber neben Dateien hat das Ding garantiert Unterstützung für Streams. Dann nimmst du einen TFileStream (oder TBufferedFileStream) und gibst das weiter.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Upload großer Dateien

  Alt 10. Sep 2020, 10:25
Unabhängig davon, ob die Übertragung über den RAM, eine FileCahe oder direkt abläuft, hat z.B. PHP (was ist dein WebServer?) einige LIMITs bei der Größe der POST-Daten und dem RAM.
https://stackoverflow.com/questions/...a-post-request

Auch deswegen übertragen viele Webseiten Uploads via JavaScript (AJAX und Co.) ... teilen es da auf und führen intern z.B. mehrere HTTP-Requests durch.



Es gibt auch WebDAV-Implementationen die mit PHP/JavaScript laufen und in "normale" Webseiten integriert werden könnten.
Als Beispiel ist z.B. im Bei Google suchenownCloud sowas drin
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Sep 2020 um 10:52 Uhr)
  Mit Zitat antworten Zitat
OlliWW

Registriert seit: 31. Aug 2011
155 Beiträge
 
#4

AW: Upload großer Dateien

  Alt 10. Sep 2020, 10:27
Über die Serverseite hatte ich mir auch schon Gedanken gemacht.

Wenn man den Upload aufteilen will, dann müsste man auf der Programm-Seite den Stream auch in "Chunks" aufteilen und irgendwie ein intelligentes Script auf der Serverseite schreiben, dass die Chunks wieder zusammenbaut.

Ich denke ich könnte das alles implementieren, ich hatte aber gehofft, dass es dafür schon ein Framwork gibt.

Aufteilen hätte auch den Vorteil, dass man das sogar multithreaded laufen lassen könnte, um mehr Bandbreite zu nutzen.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Upload großer Dateien

  Alt 10. Sep 2020, 10:39
Aufteilen hätte auch den Vorteil, dass man das sogar multithreaded laufen lassen könnte, um mehr Bandbreite zu nutzen.
Vorweg, ich bin kein Internet/Delphi experte.

Das verstehe ich nicht, sind deine einzelnen Verbindungen von der Gesamtbandbreite beschränkt so das ein multi-connect tatsächlich mehr speed bringt?

Ansonsten würde ich meinen das so ein vorhaben eher kontra-produktiv ist da immer ein Paket auf ein anderes warten muss um wieder ein ganzes zu werden.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Upload großer Dateien

  Alt 10. Sep 2020, 10:52
Eventuell/Vermutlich kannst bei deinem Webserver auch etwas über CGI oder ASP nachrüsten
und z.B. am PHP vorbei mit Perl oder Python und in Windows-Servern sogar als EXE/DLL.
http://www.virtualuniversity.ch/soft...mierung/1.html

Mit einem Rootserver (auch bei virtual und dedicated) wäre aber etwas Eigenes via TCP/IP bestimmt einfacher
und kann man auch über JavaScript clientseitig von der Webseite ansprechen.
Bei uns redet z.B. demnächst ein WebClient mit dem in Delphi geschriebenem DataSnap-Server (REST).

Für andere Platformen, wie z.B. Adroid auf einem Tablet mit Laser-Barcodescanner, nutzen wir kein Delphi. (Embarcadero war da einfach zu langsam und hat es verkackt)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 09:40 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