| Autor |
Beitrag |
noo.bee 
      
Beiträge: 120
|
Verfasst: 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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.09.09 17:13
noo.bee hat folgendes geschrieben : | | 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.
noo.bee hat folgendes geschrieben : | | 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:
noo.bee hat folgendes geschrieben : | 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.
noo.bee hat folgendes geschrieben : | 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 
      
Beiträge: 120
|
Verfasst: 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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.09.09 17:39
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: 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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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 
      
Beiträge: 120
|
Verfasst: 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
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 
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 120
|
Verfasst: So 13.09.09 18:19
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 120
|
Verfasst: So 13.09.09 18:30
oha, so stehts ja auch drin :/
paramter AUrl, ASource
also 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 DELPHI DATEI UPLOAD, denn auf diese Suchbegriffe kann man natürlich sehr schlecht kommen...
www.delphipraxis.net/topic98281.html
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.09.09 18:38
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.09.09 18:40
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.09.09 19:41
noo.bee hat folgendes geschrieben : | | einfach in uses reinschreiben geht nicht |
Was passiert denn dann?
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.09.09 19:47
noo.bee hat folgendes geschrieben : | | * 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 
      
Beiträge: 120
|
Verfasst: So 13.09.09 22:02
ok, jetzt hab ich mit meinem nichtwissen einfach mal experimentiert
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( : 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:
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 public end;
var Form1: TForm1; sl: TStrings; StringList: TStringList; implementation
{$R *.dfm}
procedure TForm1.loginClick(Sender: TObject); begin begin StringList := TStringList.Create; try StringList.Values['yl_name'] := Edit1.Text; StringList.Values['yl_pw'] := Edit2.Text; finally StringList.Free; 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
MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
try httpMain.Request.ContentType := MultiPartFormDataStream.RequestContentType;
MultiPartFormDataStream.AddFormField('EinAnderesFeld', 'dadum'); MultiPartFormDataStream.AddFile('meine_datei', 'C:\test.avi', '');
MultiPartFormDataStream.PrepareStreamForDispatch; MultiPartFormDataStream.Position := 0;
try
Response := httpMain.Post('http://mein.server.com/index.html', MultiPartFormDataStream);
except end; finally MultiPartFormDataStream.Free; end;
end; end. |
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 120
|
Verfasst: Mo 14.09.09 00:28
naja wenn ich erlich bin versteh ich das hier auch nicht:
Delphi-Quelltext 1: 2:
| 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 
|
|
|