![]() |
Fileupload verschnellern bzw mehrere gleichzeitig!
Hallo,
Ich habe mir eine Software geschrieben, welche Dateien und Infos per Post an ein PHP Skript sendet. Allerdings muss ich jetzt feststellen, dass es machmal wirklich zu lange dauert. Da ich leider nicht den Zugriff auf den Server besitze kommt keine andere Lösung in Frage. Bei den Dateien handelt es sich um Bilder! Der Upload geschieht über Indy So nun meine Frage, gibt evtl eine Methode dies zu verschnellern?? Ich habe schon an eine Datenkomprimierung (ZIP) gedacht, welches mein Skript dann wieder entpackt. Aber eine andere Lösung wäre mir lieber. Ebenfalls würde ich gerne wissen, ob es möglich ist mehrere Uploads gleichzeitig zu starten. Damit das ganze etwas schneller abläuft. Über eine akzeptable Lösung würde ich mich freuen. MfG Bennle |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hi bennle,
meine Frage vorweg: Welche Internetverbindung hast du? Es wäre auch gut, wenn du uns den relevanten Code zeigst (der vom Upload), damit wir dir helfen können. Was gefällt dir an der Lösung mit Zip nicht? So schlecht finde ich die nichtmal. Zitat:
Für jeden Upload erstellst du einen Thread (Schau mal auf ![]() In dem Thread wird dann ein IdFTP (wenn du FTP-Upload machst) erzeugt und lädt die Datei hoch. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hi!
Die Zip-Lösung finde ich gar nicht so schlecht... Obwohl ich nicht genau weiss, ob man bei JPG-Dateien allgemein soviel spart bei einer Kompression. Aber sonst den Upload verschnellern ist warscheinlich nicht drin, denn du kannst ja auch nicht deinen Upload-Speed erhöhen bzw. auf die php.ini auf dem Server zugreifen, die - so meine ich mich erinnern zu können - u.a. die Upload-Geschwindigkeit regulieren kann. mfg, Dj_Base |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hallo,
Danke für deine schnelle Antwort Zitat:
Zitat:
Delphi-Quellcode:
function SendPictureData(Ahttp: TIdHTTP; const AtoURL: String; const aParams: TStrings): String;
//Ahttp: Die HTTP Komponente von Indy //AtoURL: An diese URL werden die Informationen gesendet //aParams: Array mit Bildern (Pfad) //Result: HTML-Ergebnis (Antwort des Scripts) Var lStream: TMemoryStream; //HTML-Result des PHP-Scripts I: Integer; picture: TIdMultiPartFormDataStream; //Unit IdMultipartFormData muss eingebunden werden begin Result:=''; if not Assigned(aHttp) then exit; lStream := TMemoryStream.create; picture := TIdMultiPartFormDataStream.Create; try AHTTP.Request.ContentType := 'multipart/form-data'; //Dieser Stream wird letztendlich gesendet //Stream mit Werten füllen for I:=0 to aParams.Count-1 do picture.AddFile('bild'+IntToStr(I+1),aParams[I],'image/jpeg'); try //Stream an das PHP-Script senden AHTTP.Post(AtoURL, picture, lStream); except on E: Exception do showmessage('Fehler bei der Übertragung: ' + E.Message); end; SetLength(Result,lStream.Size); lStream.Position:=0; lStream.ReadBuffer(Result[1],lStream.Size); finally picture.Free; lStream.Free; end; end; Zitat:
Zitat:
MfG Bennle |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
|
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
Naja ok, ich denke es ist schon getan, dass ich mehrere Upload gleichzeitig machen kann. Es kommt mir einfach nur recht langsam vor! Ich glaube fast, das ich über das Webformular schneller bin, als wenn ich es mit der Software hochlade! Übrigens werden nur kleine Bilder versand von höchstens 0,5 MB MfG Bennle |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Wie groß ist so ein Bild und wielange dauert es, bis es auf dem Server ist?
|
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
MfG Bennle |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Also, rechnen wir mal:
30 Bilder * 50 kb = 1500kb = 1,47mb DSL 2000 kann 24 kb / s: 1500 / 24 = 62,5 s OK, das wäre 1 minute. Vielleicht liegt es ja daran, dass du keinen FTP-Upload verwendest. Wenn Du die möglich für FTP-Upload hast, könntest du mal versuchen, ob Du mit diesem schneller bist. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
FTP-Upload ist leider nicht möglich bzw zu unsicher, da diese Software an meine Kunden verteilt wird. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hi,
du könntest trotzdem mal FTP-Upload versuchen (nur für dich) und schauen, ob du damit wirklich schneller bist. Wenn ja, könntest du ja in eine Ini-Datei die verschlüsselten Daten (Zum Verschlüsseln empfehle ich das DEC) mitgeben. Mich würde es auch mal intressieren, ob du mit FTP schneller voran kommst. Ansonsten bliebe dir noch der Zipweg. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
Alles klar, werde es mal testen und dann bescheid geben. Jetzt muss ich mich nur auf die schnelle mit den Threads anfreunden. Oder könntest du mir schnell meine Funktion umschreiben oder erkläre wie ich sie umschreiben muss. MfG Bennle |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
daran ist nichts "sicherer". das passwort muss entschlüsselt werden dann liegt es unverschlüsselt im speicher. anschließend muss es unverschlüsselt übertragen werden wobei es von jedem abgefangen werden kann. FTP ist per definition nicht sicher sobald die leitung nicht sicher ist und das ist sie im internet nie. also verschlüsselnde FTP-server benutzen (zusammen mit OpenSSH zum beispiel SFTP) oder einen account auf dem server anlegen der nur beschränkten zugriff hat. bei dem wäre es dann nicht so schlimm wenn das passwort bekannt wird. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
Stimmt daran habe ich garnicht gedacht!! Also kommt das nicht in Frage! Bennle |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
@Frickel
:wall: Mist, daran hab ich auch nicht gedacht. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hab mir das mit den Threads grad mal angeschaut, aber irgendwie verstehe ich nicht wo und wie ich die Threads starte.
Ich denke es liegt auch einfach daran, dass ich das bis heute Abend fertig haben will und unter Zeitruck stehe :lol: |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hi,
ich muss mich etwas präzisieren. Es würde reichen, wenn du aus dem Tutorial nur Kapitel 8 (Das VCL-Thread Objekt) liest. Wenn Du noch etwas wartest, versuche ich schnell ein kleines Beispiel zu tippen. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hi,
auf die schnelle fiel mir das hier ein:
Delphi-Quellcode:
Ich hab jetzt nicht alles aus deinem Code übernommen, aber ich denke, dass du das Prinzip verstehst (selbst, wenn mein Code jetzt nicht funktioniert)
TUploadThread = class(TThread)
private FLocalFileName: String; FAToURL: String; protected procedure Execute; override; public constructor Create(const LocalFileName: String; const AToURL: String); end; implementation { TUploadThread } constructor TUploadThread.Create(const LocalFileName: String; const AToURL: String); begin FLocalFileName := LocalFileName; FAToURL := AToURL; end; procedure TUploadThread.Execute; var IdHTTP: TIdHTTP; picture: TIdMultiPartFormDataStream; begin IdHTTP := TIdHTTP.Create(nil); picture := TIdMultiPartFormDataStream.Create; try IdHTTP.Request.ContentType := 'multipart/form-data'; picture.AddFile('bild0', FLocalFileName, 'image/jpeg'); try IdHTTP.Post(FAToURL, picture); except on E: Exception do raise Exception.Create('Fehler: ' + E.Message); end; finally IdHTTP.Free; picture.Free; end; Terminate; end; // Aufrufbeispiel var UploadThread: TUploadThread; begin UploadThread := TUploadThread.Create('C:\Test.jpg', 'www.blubb.de/ladmichhoch.php'); UploadThread.FreeOnTerminate := true; end; |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Hallo,
Hab mal deinen Code probiert! Allerdings bekomm ich Ihn nicht zum Laufen! Kommt immer ein Thread error (Handle ungültig) Was muss ich da tun? MfG Bennle |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
Zitat:
Am Anfang gehts erst langsam hoch und zum ende hin wird es meistens auch noch mal langsamer, so gesehen kommt da noch etwas Zeit hinzu und generell ist es nich immer der Fall, dass man mit seinem Maximalen Upload auch uppt. |
Re: Fileupload verschnellern bzw mehrere gleichzeitig!
He bennle!
hast du mal ausproboiert, um wie viel KB die JPEG-Dateien kleiner werden wenn du sie mit WinZip komprimierst. Je nach dem, wie viel Prozent von der Ursprungsgröße du einsparst könntest du dir Upload-Zeit sparen. Der Haken ist allerdings das Komprimieren und Extrahieren: das dauert ja auch noch ein wenig... Man müsste es halt mal ausprobieren! :-D Für große Dateien (z.B. mehrere (größere) PDFs) würde sich das verfahren aber vermutlich rentieren. Es grüßt, Dj_Base |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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