Autor Beitrag
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 17:10 
naja es wäre mehr die frage gewesen, wie ich drag&drop nutze um mehrere dateien hineizuziehen und die auf knopfdruck hochladen zu lassen.
mit FileListBox komm ich nicht recht weiter - somal ich glaub, dass das nicht die richtige komponente ist. allerdings bringt mich listview auch nicht weiter. bin da jetzt ein wenig ratlos :(
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 13.09.09 17:13 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
meine frage war noch, mehrere dateien per drag&drop hochzuladen.

Dafür musst du es erst einmal schaffen, dich anzumelden und eine Datei hochzuladen. Anschließend kannst du dich an Drag&Drop machen. Und wenn das alles klappt, kannst du dein eigentliches Ziel erreichen: Mehrere Dateien per Drag&Drop hochladen.

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
muss ioch n neues thema anfangen oder wirds hier mit beantwortet ?

Du bist erst 23 Tage hier, deshalb verzeihe ich dir das noch. Aber nur wenige Fragen werden an einem Tag sofort geklärt - und hier ist doch eigentlich viel los, wir kommen doch recht zügig weiter - wo ist das Problem?

Wenn das mit dem Anmelden jetzt klappt, kannst du anschließend das Upload-Formular abschicken. Die URL dafür hast du ja schon gepostet:

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Quelltext
1:
action="http://stor01.server.com:555/upload/upload.php" method="post" onsubmit="UploadHandler_startProgressBar('stor01.server.com:555','stor01'); return true;">					

Jetzt brauchst du noch den Namen des <input type="file" ... />-Elements, dann bist du schon fast fertig.

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
naja es wäre mehr die frage gewesen, wie ich drag&drop nutze um mehrere dateien hineizuziehen und die auf knopfdruck hochladen zu lassen.
mit FileListBox komm ich nicht recht weiter - somal ich glaub, dass das nicht die richtige komponente ist. allerdings bringt mich listview auch nicht weiter. bin da jetzt ein wenig ratlos :(

Halt, halt, eins nach dem anderen! Erstmal muss der Upload klappen, dann kommt Drag&Drop. Und dafür solltest du tatsächlich ein neues Thema aufmachen, denn hier geht's um einen HTTP-Upload.

Grüße,
Yogu
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 17:31 
Zitat:
Zitat:
muss ioch n neues thema anfangen oder wirds hier mit beantwortet ?


Du bist erst 23 Tage hier, deshalb verzeihe ich dir das noch. Aber nur wenige Fragen werden an einem Tag sofort geklärt - und hier ist doch eigentlich viel los, wir kommen doch recht zügig weiter - wo ist das Problem?


also war eigentlich nicht streng oder böse gemeint ;) wollte es ja nur richtig machen, falls ich n neues thema hätte anfangen müssen ;)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 13.09.09 17:39 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Zitat:
muss ioch n neues thema anfangen oder wirds hier mit beantwortet ?


Du bist erst 23 Tage hier, deshalb verzeihe ich dir das noch. Aber nur wenige Fragen werden an einem Tag sofort geklärt - und hier ist doch eigentlich viel los, wir kommen doch recht zügig weiter - wo ist das Problem?


also war eigentlich nicht streng oder böse gemeint ;) wollte es ja nur richtig machen, falls ich n neues thema hätte anfangen müssen ;)

Oh, dann hab ich dich falsch verstanden. Verzeih mir. :?
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 17:57 
also ich hab mal das orakel befraget. ich lese überall, dass man zum hochladen noch ne *.php benötigt bzw. sich jeder ne *.php erstellt hat. stimmt das oder gehts auch "einfach" nur mit delphi ohne php ?
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 13.09.09 17:59 
PHP läuft bereits auf dem Server, oder irgendeine andere Sprache. Wenn du anstatt Rapidshare etc. einen eigenen Webserver benutzen würdest, müsstest du z.B. ein PHP-Script schreiben, das die Dateien in Empfang nimmt und speichert.

Auf dem Client, also auf deinem PC, läuft nur dein Delphi-Programm. Eine Alternative dazu wäre ein Webbrowser (nur so als Beispiel).

Wie weit bist du jetzt?
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 18:05 
ok, also dann brauch ich keine *.php... wie weit ich bin ? naja ich versuch grad bei google was passendes zu finden über "idhttp.put upload"

es will sich mir nicht so recht erschliessen wie das funzt... ein kleiner trost ist, das ich weiß, dass das hier nicht funzt :D :D

idhttp1.Put('c:\test.avi');

aber ich bin eben noch am suchen... dauert eben länger wenn man bei null anfängt - also sich mit idhttp nich auskennt :P :P
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.09.09 18:06 
Put gibts nur bei FTP. Ein direkter Dateiupload ist da nicht möglich, ich dachte es wäre schon klar gewesen, dass man da das Formular quasi abschicken muss...
Und die Daten eben schicken, die dort im Browser eingetragen werden.
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 18:19 
na dann such ich mit idhttp.post weiter :oops: :oops:

also, dass konnte ich google schon entlocken:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.uploadClick(Sender: TObject);
var
  film: TMemoryStream;
begin
  film:= TMemoryStream.Create('c:\test.avi');
  try
    IdHTTP1.Post(film);
  finally
    film.Free;
  end;
end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.09.09 18:23 
Post erwartet aber als ersten Parameter die Adresse, woher soll denn der Befehl sonst wissen wohin das eigentlich geschickt werden soll? ;-)
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 18:30 
oha, so stehts ja auch drin :/

paramter AUrl, ASource

also
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
begin
  film:= TMemoryStream.Create('c:\test.avi');
  try
    IdHTTP1.Post('http://meine.url', film);
  finally
    film.Free;


allerdings sinhd das zu viele parameter: 'c:\test.avi'
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.09.09 18:34 
Ein MemoryStream hat ja auch nix mit einer Datei zu tun. Dafür gibts nen FileStream. Aber das alles brauchst du hier gar nicht.

Ich bin ja nicht so und poste einmal das erste Suchergebnis von Google bei Suche bei Google DELPHI DATEI UPLOAD, denn auf diese Suchbegriffe kann man natürlich sehr schlecht kommen...
www.delphipraxis.net/topic98281.html
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 13.09.09 18:38 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich bin ja nicht so und poste einmal das erste Suchergebnis von Google bei Suche bei Google DELPHI DATEI UPLOAD, denn auf diese Suchbegriffe kann man natürlich sehr schlecht kommen...
www.delphipraxis.net/topic98281.html

Autsch. Darauf hätte ich auch selbst kommen können. Ich dachte, mit den Indys könnte man sowohl klassischen Post als auch Dateien versenden. Und gestern Abend hatte ich es noch von enctype="multipart/form-data" :autsch:

Wenn

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
film:= TFileStream.Create('c:\test.avi', fmOpenRead or fmShareDenyWrite);
try
  IdHTTP1.Post('http://meine.url', film);
finally
  film.Free;
end;

Dieser Code nicht funktioniert, musst du wohl auf die verlinkte Methode zurückgreifen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.09.09 18:40 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Autsch. Darauf hätte ich auch selbst kommen können.
Ich wollte es gerade per Hand nochmal schnell schreiben, aber dann dachte ich, dass ich doch sicher irgendwo schneller nen Beispiel finde. :D
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 19:40 
sooo, jetzt gehts weiter

bei mir scheiterts schon bei dem ersten punkt
* MsMultiPartFormData.pas in den uses-Teil aufnehmen - es wird einfach nicht aufgenommen

einfach in uses reinschreiben geht nicht und wenn ich "Projekt" - "dem Projekt hinzufügen" mache öffnet sich zwar das MsMultiPartFormData.pas aber wird eben in meiner Form1 nicht "erkannt"
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.09.09 19:41 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
einfach in uses reinschreiben geht nicht
Was passiert denn dann?
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 13.09.09 19:47 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
* MsMultiPartFormData.pas in den uses-Teil aufnehmen - es wird einfach nicht aufgenommen

Dir ist aber schon klar, dass du in der uses-Anweisung keine Dateiendung brauchst, oder? Alles andere sollte einen Compilerfehler auslösen.
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: So 13.09.09 22:02 
ok, jetzt hab ich mit meinem nichtwissen einfach mal experimentiert :D :D

es scheint alles zu gehen. beim drücken des loginbuttons kommt keine fehlermeldung, mein Memo1 gibt mir den status 200 zurück - also ok ;)
wenn ich dann auf den button upload drücke, ist mein Form1 für ca 1minute blockiert. es scheint etwas zu passieren. jedoch sehe ich KEINE datei die upgeloaded wurde, nachdem Form1 wieder "frei" ist

beim kompilieren gab es noch warnungen:

Zitat:
[DCC Warnung] http.form1.pas(8): W1005 Unit 'FileCtrl' ist plattformspezifisch
[DCC Hinweis] http.form1.pas(61): H2164 Variable 'HttpServer' wurde deklariert, aber in 'TForm1.uploadClick' nicht verwendet


hier nochmal der ganze code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
unit http.form1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  StdCtrls, FileCtrl, ComCtrls, MsMultiPartFormData;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    login: TButton;
    httpMain: TIdHTTP;
    Edit2: TEdit;
    Memo1: TMemo;
    upload: TButton;
    procedure loginClick(Sender: TObject);
    procedure uploadClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  sl: TStrings; //lokale Variable
  // fs: TFileStream;
  StringList: TStringList;
implementation

{$R *.dfm}

procedure TForm1.loginClick(Sender: TObject);
begin
// fs := TFileStream.Create('c:\test.avi');
begin
  StringList := TStringList.Create;  //TStringList erstellen
  try
    StringList.Values['yl_name'] := Edit1.Text; //wenn die Komponente erstellt wurde wird der Code, der hier steht, ausgeführt
    StringList.Values['yl_pw'] := Edit2.Text;   //wenn die Komponente erstellt wurde wird der Code, der hier steht, ausgeführt
  finally
    StringList.Free; //Speicherfreigeben
  end;
end;

httpMain.Post('http://mein.server.com/index.php?Modul=Login', StringList);
memo1.Lines.Text := httpMain.ResponseText;
end;








procedure TForm1.uploadClick(Sender: TObject);
var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  HttpServer, Response: String;
begin

  // Objekte instanzieren
  MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;

  try
      // Content-Type bestimmen
      httpMain.Request.ContentType := MultiPartFormDataStream.RequestContentType;

      // Formular-Felder setzen, die keine Dateien sein sollen
      MultiPartFormDataStream.AddFormField('EinAnderesFeld''dadum');
      // ...

      // Datei laden
      MultiPartFormDataStream.AddFile('meine_datei''C:\test.avi''');

      // diese Methode muss _vor_ dem Senden augerufen werden
      MultiPartFormDataStream.PrepareStreamForDispatch;
      MultiPartFormDataStream.Position := 0;

      try

        // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
        Response := httpMain.Post('http://mein.server.com/index.html', MultiPartFormDataStream);

      except
        // Upload fehlgeschlagen, entsprechend reagieren
      end;
    //end;
  finally
    MultiPartFormDataStream.Free;
  end;

end;
end.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.09.09 22:41 
Du hast nicht einmal den Feldnamen von dem Beispiel geändert und nix eingebaut davon...
// EDIT:
Ok, zumindest den Dateinamen und so. Aber wenn du nicht den Namen des Feldes auch änderst, wirds trotzdem nix.
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mo 14.09.09 00:28 
naja wenn ich erlich bin versteh ich das hier auch nicht:

ausblenden Delphi-Quelltext
1:
2:
// Formular-Felder setzen, die keine Dateien sein sollen
      MultiPartFormDataStream.AddFormField('EinAnderesFeld''dadum');


ich soll ein formularfeld setzen, welches keine datei sein soll ? seit wann sind denn felder dateien ? oder raff ich hier was überhaupt nicht ? oder nennt mir mal ein feld, welches eine datei sein soll :gruebel: