Autor |
Beitrag |
noo.bee
      
Beiträge: 120
|
Verfasst: Sa 12.09.09 18:19
ich hab mal n weng gesucht im forum. bin aber net so recht fündig geworden. was ich mir schon notiert hab ist "idftp"...
also, meine frage: ich habe einfach nur ne TForm und möchte per drag&drop dateien hineinziehen und diese dann per knopfdruck z.b. zu meinem account bei funpic, kilo, bplaced ... uploaden.
jedoch finde ich bei codegear nichts wie "ftp" oder "upload" oder ähnliches.
hab auch schon bei google nach ne "anleitung" für mein vorhaben gesucht. ich weiß aber nicht so recht, wo ich nach dem erstellen des Forms anfangen soll.
hat wer ne übersicht was alles zu tun ist um dateien hochladen zu können ?
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 12.09.09 18:39
Zu der Komponente IdFTP gibt es genug Anleitugnen, wie man damit Dateien hochlädt -> Forensuche; google; oder die mitgelieferten Beispiele anschauen.
Das könntest du erstmal testweise z.B. mit einem ButtonClick verknüpfen. Wenn das dann funktioniert, solltest du dich an das Drag&Drop machen.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 12.09.09 20:04
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 11:34
also ich hab da mal n bissi rumprobiert. das mit idftp war n fehler von mir. ich benötige http.
ich hab ja dann nen zugang mit user und passwort. so sähe das aus. aber es fehlt noch was. ich kann ja auch nix hochladen.
mit "idhttp.Put" komm ich irgendwie nicht so recht weiter.
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:
| var Form1: TForm1; fs: TFileStream; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin fs := TFileStream.Create('c:\test.avi'); idhttp1.Request.Username := edit1.Text; idhttp1.Request.Password := edit2.Text; idhttp1.Request.Host := edit3.Text; IdHttp1.Post('http:\\bplaced.net\irgend.ein.ordner', fs);
end;
end. |
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.09.09 11:50
Http? Bist du sicher? Dann musst du die entsprechende Seite bzw. genauer gesagt das Uploadskript, das die Seite beim Abschicken aufruft, mit den entsprechenden Daten füttern.
Da musst du dann selbst schauen wie das Uploadformular aussieht und welche Daten entsprechend gesendet werden müssen.
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 12:02
naja es ist so ähnlich wie z.b. bei rapidshare.de... man sucht aus dem browser heraus ne datei aus und klickt dann auf upload. also das is doch dann http oder ?
Zitat: | Dann musst du die entsprechende Seite bzw. genauer gesagt das Uploadskript, das die Seite beim Abschicken aufruft, mit den entsprechenden Daten füttern.
|
kann ich die daten, die ich dafür benötig vom quelltext auslesen ?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.09.09 12:18
Ja, du siehst dort welches Skript angesprochen wird (action=...) und welche Parameter benötigt werden (die Formularfelder und deren Namen).
Direkten Einblick in die gesendeten Post-Daten usw. erhältst du z.B. mit HttpFox. Auch interessant zur Analyse sind Firebug, Web Developer Toolbar, ...
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 13:20
also der quelltext gibt folgendes her:
Quelltext 1:
| action="http://stor01.server.com:555/upload/upload.php" method="post" onsubmit="UploadHandler_startProgressBar('stor01.server.com:555','stor01'); return true;"> |
reichen die daten aus ? wenn ja wie gehören die in idhttp eingebunden bzw. welche der angaben aus action benötige ich?
und stor01 ist flexibel. jenach auslastung des servers ändert sich stor01 z.b. zu storXX. also müsste ich vorher noch abfragen, wohin der upload geht
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.09.09 13:31
Naja, zuerst musst du dich ja anmelden, oder? Dafür schaust du am besten mal in das Formular, in dem du deine Logindaten eingibst. Achte auf solche Schnipsel:
XML-Daten 1: 2:
| <form action="die Adresse" ... > <input type="text" name="Name des Benutzernamen-/Passwordfeldes" /> |
noo.bee hat folgendes geschrieben : | z.b. zu meinem account bei ... bplaced ... uploaden. |
BPlaced ist kein Problem, da kannst du doch ein FTP-Konto anlegen lassen. Dann kannst du auch das von Dude566 gepostete Tutorial verwenden.
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 13:42
also ich dachte, ich lass das mit name und passwort offen. ich hab das so gemacht:
Delphi-Quelltext 1: 2:
| idhttp1.Request.Username := edit1.Text; idhttp1.Request.Password := edit2.Text; |
also man muss in ein textfeld selber name & passwort eingeben... oder funktioniert das so nicht ?
die schnipsel sehen so aus:
Quelltext 1:
| <input type="text" name="tk_name" value="Name" onclick="if(this.value=='Name'){this.value='';}" onfocus="if(this.value==''){this.value='Name';}" onblur="if(this.value==''){this.value='Name';}" id="username" /> |
und
Quelltext 1:
| <input type="password" name="tk_pw" value="Password" onclick="if(this.value=='Password'){this.value='';}" onfocus="if(this.value==''){this.value='Password';}" onblur="if(this.value==''){this.value='Password';}" id="password" /> <input type="submit" value="Login" name="tk_submit" class="button open" style="cursor:pointer;margin-left:10px;" id="password"> |
achja, oben hab ich ja geschrieben, dass FTP nicht geht... mit bplaced und co war nur als beispiel gedacht - aber es is mehr richtung rapidshare.de. also uploaden über die browseroberfläche
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.09.09 14:27
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 14:46
ähm, steh ich da aufm schlauch oder meinst du
XML-Daten 1:
| <form action="index.php?Modul=Login" method="post" id="login_form"> |
ich melde mich doch bei www.mein.server.com mit user & pass an... ach neeee, du meinst mein.server.com/account.html oder willst du was ganz anderes wissen 
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.09.09 15:05
noo.bee hat folgendes geschrieben : | ähm, steh ich da aufm schlauch oder meinst du
XML-Daten 1:
| <form action="index.php?Modul=Login" method="post" id="login_form"> | |
Nein, genau das mein ich
Jetzt musst du nur noch "index.php?Modul=Login" als Adresse (die ich als 'http://server.tld/anmeldeurl') gepostet habe) einsetzen, und per Post abschicken - und am besten mal den Rückgabewert in ein Memo schreiben. Dort müsste jetzt stehen, ob die Anmeldung erfolgreich war.
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 15:51
mhhh, also ich bekomm zwar keinen fehler angezeigt, aber beim kompilieren bricht er ab wegen einer zugriffsverletzung in http.exe - also so soll dann meine exe heißen
das is mein 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:
| unit http.form1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; IdHTTP1: TIdHTTP; Edit2: TEdit; Memo1: TMemo; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; StringList: TStringList; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin StringList.Values['tk_name'] := Edit1.Text; StringList.Values['tk_pw'] := Edit2.Text;
IdHttp1.Post('http://mein.server.com/index.php?Modul=Login', StringList);
memo1.Lines.Text := idhttp1.ResponseText; end;
end. |
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.09.09 15:52
Du erzeugst die StringList nirgends...
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: So 13.09.09 15:58
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 16:18
also es funktioniert dank euch (fast) alles. ich bekomme ein
HTTP/1.0 200 OK
zurückgeliefert. allerdings bekomme ich das auch, wenn ich als name/passwort einfach irgendwas eingebe. wieso ? müsste da nicht ein fehler kommen ?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.09.09 16:20
200 heißt alles ok, und in der zurückgelieferten Seite steht dann das Ergebnis drin. Also ggf. "log dich ein". 
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: So 13.09.09 16:39
meine frage war noch, mehrere dateien per drag&drop hochzuladen. muss ioch n neues thema anfangen oder wirds hier mit beantwortet ?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.09.09 16:46
Naja, wenn du den einen Upload fertig hast, dann kannst du das ja mehrfach hintereinander machen. 
|
|
|