AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Rapidshare.com --- Ein Datei hochladen
Thema durchsuchen
Ansicht
Themen-Optionen

Rapidshare.com --- Ein Datei hochladen

Offene Frage von "buster55"
Ein Thema von buster55 · begonnen am 27. Jun 2008 · letzter Beitrag vom 27. Jun 2008
Antwort Antwort
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#1

Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 13:25
DAS GANZE BOARD WURDE DURCHSUCHT UND ICH KONNTE DEFINITIV KEINE FÜR MICH GEEIGNETE LÖSUNG FINDEN, WAS ENTWEDER AUS MEINER UNFÄHIGKEIT ODER AUS DER MANGELDEN BEHANDLUNG DIESES THEMAS IM BOARD RESULTIERT!
servus

mein vorhaben ist folgendes: ich möchte ein simples tool schreiben das auf rapidshare.com eine datei hochlädt.
ich diesbezüglich schon was ausprobiert. ich hatte zuerst vor auf rapidshare das edit feld zum uploaden der datei (das feld in das der lokale link zur datei reinkommt) per script zu füllen, das muss man sich so vorstellen:

Delphi-Quellcode:
 
function WbEnumFields(WebBrowser: TWebBrowser; SL: TStrings): Boolean;
var
  i, j: Integer;
  FormItem: Variant;
begin
  Result := True;
  //Hat das Dokument Forms? (Frames)
  if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
  begin
    Result := False;
    Exit;
  end;
  //Bearbeite alle Frames
  for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
  begin
    FormItem := WebBrowser.OleObject.Document.forms.Item(I);
    // Bearbeite alle Felder eines Frames
    for j := 0 to FormItem.Length - 1 do
    begin
      try
        SL.Add(FormItem.Item(j).Name);
      except
        Result := False;
        Exit;
      end;
    end;
  end;
end;


// Durchsuche alle Formulare im Webbrowser nach dem Feldnamen
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Field : Field.x : Frame Nummer
// : Fielf.y : Feld Nummer im Frame
// Result : true -> Feld existiert
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbFindField(WebBrowser: TWebBrowser; FieldName: string; var Field: TPoint): boolean;
var
  i, j: Integer;
  FormItem: Variant;
begin
  Result := False;
  //Hat das Dokument Forms? (Frames)
  if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
  begin
    Exit;
  end;
  //Bearbeite alle Frames
  for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
  begin
    FormItem := WebBrowser.OleObject.Document.forms.Item(I);
    // Bearbeite alle Felder eines Frames
    for j := 0 to FormItem.Length - 1 do
    begin
      try
        // Feldname wurde gefunden
        // gebe ihn zurück und ende
        if FormItem.Item(j).Name = FieldName then
        begin
          Field.x := i; // Position speichern
          Field.Y := j;
          Result := True;
          exit;
        end;
      except
        Exit;
      end;
    end;
  end;
end;


// Trage Text in ein Editfeld ein
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Value : Der Text, der in das Feld hinein soll
// Result : true -> kein Fehler
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbSetEditField(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
var
  Field: TPoint;
begin
  // Position des Felds holen
  if not WbFindField(WebBrowser, FieldName, Field) then
  begin
    Result := false; // Feld existiert nicht
    exit; // Ende
  end;
  try
    // Feld füllen
    WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Value := Value;
    Result := True;
  except
    Result := false;
    Exit;
  end;
end;


// Lese Text aus einem Editfeld
// Übergabe:
// Webbroweser: Webbrowser, der die aktuelle Seite enthält
// FieldName : Name des gesuchten Felds
// Rückgabe
// Value : Text, der im Feld steht
// Result : true -> kein Fehler
// : false -> Feld existiert nicht
// oder kein Dokument geladen
function WbGetEditField(WebBrowser: TWebBrowser; FieldName: string; var Value: string): Boolean;
var
  Field: TPoint;
begin
  // Position des Felds holen
  if not WbFindField(WebBrowser, FieldName, Field) then
  begin
    Result := false; // Feld existiert nicht
    exit; // Ende
  end;
  try
    // Feld lesen
    Value := WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Value;
    Result := True;
  except
    Result := false;
    Exit;
  end;
end;
so ist es im endeffekt möglich die seite nach dingen wie edit felder, buttons, ceckboxen und allen möglichen anderem kram zu scannen, und das so:
WbEnumFields(WebBrowser1, ListBox1.Items); das einzige was ich damit ereiche ist ein eintrag mit dem namen 'filecontent'
und wenn ich das versuche zu bearbeiten:
WbSetEditField(WebBrowser1, 'filecontent', 'C:\...'); ...tut sich garnichts
die MozillaFirefox komponente unterstützt so etwas nicht...

----
was ich nun ereichen möchte ist das mir anhand einer lokalen datei adresse auf dem computer (C:\...)der lösch- und der downloadlink der hochgeladenen datei, am besten in einer memo,richedit (log-datei ähnlich) übermittelt wird.
am besten wäre es wenn ich dafür nicht mit dem webbrowser arbeiten müsste (vieleicht mit indy irgendwas zaubern..?)
----
WICHTIG:
So ein Tool zu programmieren ist 100% legal da rapidshare selbst ein opensource perl script anbietet das es ermöglicht datein hochzuladen, nur leider verstehe ich nchits von perl
http://images.rapidshare.com/software/rsapiresume.pl

man beachte das ich mich was internet bzw online programmierung erst noch ein wenig zurecht finden muss, also wäre es gut wenn man mir gut erklären würde wie es geht , ich will schließlich dazu lernen und nicht einfach ein fertiges script ohne jeglich erklärung an den kopf geworfen kriegen
der user der das schafft bekommt natürlich einen (virtuellen) kuss von mir

dann legt mal los

liebe grüße
buster
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 14:18
Es wird zwar etwas umständlich, sollte aber funktionieren.
Als erstes suchst du mit IdHTTP die Hauptseite auf. Dabei gibts ein Formular, welches per POST Daten verschickt. Dabei gibts eine Sitzung. Deren ID steht in der Adresse vom Formular. Das ist Parameter 1. Dann muss die Datei noch per POST über idHTTP verschickt werden (wie weiß ich nicht). Auf der weitergeleiteten Seite (hier musst du glaub ich JavaScript parsen) stehen dann Link und Löschlink.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
mschnell

Registriert seit: 13. Sep 2006
27 Beiträge
 
#3

Re: Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 14:25
Hi buster
ich denke dein Problem ist das "filecontent" kein edit feld ist sondern ein "file" input
dieser hat keinen value(bzw unterstützen ihn die meisten browser wohl nicht) und den kannst du also auch nicht setzen

ich kann dir leider auch nicht sagen wie du das mit delphi gefüllt kriegst...

hab aber nen andern thread dazu gefunden

vielleicht hilft der dir ja weiterclick
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#4

Re: Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 15:02
JAAAAAAA!!!
es funktioniert!!!
lieben dank an euch beide habt mich drauf gebracht,
jetzt erscheint der UPLOAD knopf im bild gibts ne möglichkeit den webbrowser auf ein bestimmtes bild oder auf eine bestimmte position klicken zu lassen ??
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 15:08
Zitat von buster55:
gibts ne möglichkeit den webbrowser auf ein bestimmtes bild oder auf eine bestimmte position klicken zu lassen ??

WB_ClickImage(Webbrowser1,'btnupload');
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 15:11
Wenn du die Webseite nicht anzeigen willst ist es überflüssig TWebbrowser etc. zu nutzen was dir die Webseite darstellt. Nutze einfach TIdHttp und sende die entsprechenden Felder direkt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#7

Re: Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 15:15
ist mit sicherheit ne gute idee allerdings müsstest du mir zeigen wie das geht, ausserdem kann man das bild nicht anklicken da RS die adresse zum bild verschlüsselt und selbst wenn man die adresse rausfindet der browser damit nicht umgehen kann.
also brauch ich ne erklärung für TIdHttp und ne möglichkeit webbrowser auf bestimmte stellen im bild klicken zu lassen
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 15:37
Zitat von buster55:
jetzt erscheint der UPLOAD knopf im bild gibts ne möglichkeit den webbrowser auf ein bestimmtes bild oder auf eine bestimmte position klicken zu lassen ??
Der Button sollte so zu finden sein:

document.getElementById('btnupload') (Siehe HTML Quelltext)
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:38 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