AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi 1Datei mit MultiPartFormDataStream funktioniert,mehrere nich

1Datei mit MultiPartFormDataStream funktioniert,mehrere nich

Offene Frage von "Chrissi91"
Ein Thema von Chrissi91 · begonnen am 8. Mär 2008 · letzter Beitrag vom 8. Mär 2008
Antwort Antwort
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#1

1Datei mit MultiPartFormDataStream funktioniert,mehrere nich

  Alt 8. Mär 2008, 18:13
Ich habe ja schon des Öfternen mit MultiPartFormDataStream gearbeitet, hat auch prima geklappt. Ich verwende folgenden Code, um eine Datei über ein Formular hochzuladen:

MultiPartFormDataStream: TMsMultiPartFormDataStream; ist lokal deklariert.

Site_URL ist eine Konstante mit der URL, z.B. http://www.google.de/MeinVerzeichnis/

Delphi-Quellcode:
Try
  MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
  HTTP.Request.ContentType := MultiPartFormDataStream.RequestContentType;
  MultiPartFormDataStream.AddFile('f', ExtractFilePath(ParamStr(0)) + 'dir.txt', '');
  MultiPartFormDataStream.PrepareStreamForDispatch;
  MultiPartFormDataStream.Position := 0;
  Buffer := HTTP.Post(Site_URL + 'upload.php?name=dir', MultiPartFormDataStream);
Finally
  MultiPartFormDataStream.Free;
end;
Das Formular schaut wie folgt aus:

Code:
<?php

    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data"><input type="file" name="f"><input name="l" type="submit"></form>';
    move_uploaded_file($_FILES['f']['tmp_name'],'/srv/www/vhosts/google.de/httpdocs/MeinVerzeichnis/'.$_GET['name'].'.txt');

?>
Funktioniert auch alles prima. Jetzt habe ich aber die Datei gesplittet in 1 MB-Blöcke und möchte die nacheinander uploaden:

"Dateien" ist lokal deklariert als Integer.
SplitFile ist einfach nur eine eigene Funktion. Sie macht aus dir.txt dir_1.txt, dir_2.txt, etc.
MaxSize ist eine globale Konstante mit 1 MB als Wert, aber in Byte angegeben.
Response ist vom Typ String.

Delphi-Quellcode:
SplitFile(ExtractFilePath(ParamStr(0)) + 'dir.txt', FileGetSize(ExtractFilePath(ParamStr(0)) + 'dir.txt'));
Dateien := Ceil((FileGetSize(ExtractFilePath(ParamStr(0)) + 'dir.txt')) / MaxSize);
DeleteFile(ExtractFilePath(ParamStr(0)) + 'dir.txt');
For I := 1 to Dateien do
  begin
    Try
      MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
      HTTP.Request.ContentType := MultiPartFormDataStream.RequestContentType;
      MultiPartFormDataStream.AddFile('f', ExtractFilePath(ParamStr(0)) + 'dir_' + IntToStr(I) + '.txt', '');
      MultiPartFormDataStream.PrepareStreamForDispatch;
      MultiPartFormDataStream.Position := 0;
      Response := HTTP.Post(Site_URL + 'upload.php?name=dir' + IntToStr(I), MultiPartFormDataStream);
    Finally
      MultiPartFormDataStream.Free;
      DeleteFile(ExtractFilePath(ParamStr(0)) + 'dir_' + IntToStr(I) + '.txt');
    end;
  end;
Auf dem Server liegt keine einizge Datei danach. Wieso nicht? Habe doch nur eine For-Schleife drumrumgemacht. Verzeichnis hat natürlich CHMOD 777 und wenn ich wie ganz oben nur eine Datei mache, klappt es auch. Die maximale Dateigröße liegt bei 2 MB laut phpinfo();
  Mit Zitat antworten Zitat
geofranz01

Registriert seit: 17. Jun 2007
72 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: 1Datei mit MultiPartFormDataStream funktioniert,mehrere

  Alt 8. Mär 2008, 18:18
Kenn mich damit jetzt nicht so aus, aber muss in Zeile 12 deines letzten Codes nicht noch ein Unterstrich:

Response := HTTP.Post(Site_URL + 'upload.php?name=dir[color=#ff0000]_[/color]' + IntToStr(I), MultiPartFormDataStream);
P.S. Mein Delphi-Code funktioniert immer noch nicht, ich glaube ich wende mich mal an einen Admin.
Max
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#3

Re: 1Datei mit MultiPartFormDataStream funktioniert,mehrere

  Alt 8. Mär 2008, 18:35
Welchen Namen die Datei auf dem Server hat ist ja egal. Hatte anfangs mit Unterstrich, aber ich dachte es läge am Sonderzeichen in der URL, dass es nicht klappt und hab ihn rausgenommen.

In dem PHP-Code passiert ja nichts anderes als das Verschieben der temporären Datei nach dir1.txt, etc. Ob da nun ein Unterstrich ist oder nicht, is doch total egal.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:30 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