Dropbox Datei (grafik, texte oder blitzbasic code) laden

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Britanny

Betreff: Dropbox Datei (grafik, texte oder blitzbasic code) laden

BeitragDi, Jan 07, 2014 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich mit einem Blitz3d Programm Dateien von meiner Dropbox laden. Zum Beispiel eine Grafik (.jpg) oder ein Textdokument (.txt).

Schon mal danke im voraus Smile

lg Britanny
 

Britanny

Betreff: Serverfehler ...

BeitragMi, Jan 08, 2014 2:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Schluss hängt der BBCode mit Serverfehler. Hab auch schon diverse Möglichkeiten ausprobiert. Sad

Code: [AUSKLAPPEN]

; Dropbox link zum Dokument das geladen werden soll "https://www.dropbox.com/s/ctf65uwlwyyo8f3/Dokument.rtf"

stream=OpenTCPStream("www.dropbox.com",80) ;stellt verbindung zum server her


WriteLine(stream,"GET Dokument.rtf HTTP/1.1") ;Die gewünschte Datei:
WriteLine(stream,"Host: www.dropbox.com") ;Den Server angeben
WriteLine(stream,"") ;ende des Header + ;sendet den entsprechenden Befehl


Local re$=ReadLine$(stream)

Select re$
   Case "HTTP/1.0 200 OK"
   Case "HTTP/1.0 200 OK"
   Default
      RuntimeError("Serverfehler!")
End Select

Repeat
   re$=ReadLine$(stream)
   If Left$(re$,15)="Content-Length:" Then
      Local size=Right$(re$,Len(re$)-16)
   EndIf
Until re$=""


Local bank=CreateBank(size)
Local file=WriteFile("New_Dokument.rtf")
ReadBytes(bank,stream,0,size)
WriteBytes(bank,file,0,size)
CloseTCPStream(stream)


Falls jemand doch noch eine Idee hat wäre ich super dankbar.
lg Britanny

Eingeproggt

BeitragMi, Jan 08, 2014 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Freut mich dass du auf die grundlegende Herangehensweise selber drauf gekommen bist Smile
Jetzt heißt es nur noch, so Feinheiten zu korrigieren wie vor allem den Pfad. Der muss mit / anfangen, also zB "GET /Dokument.rtf ...". Und desweiteren ist die URL bestimmt nicht www.dropbox.com/Dokument.rtf sondern eher etwas wie www.dropbox.com/12345678/public/Dokument.rtf (oder wie auch immer... verwende Dropbox eigentlich nur über Client, nie über Web). Sprich du müsstest den vollständigen Pfad angeben, der dann in diesem Beispiel wäre: "GET /12345678/public/Dokument.rtf ..."

Und am Ende müsste die herunter geladene Datei dann natürlich immernoch mit ReadFile, LoadImage etc. geöffnet werden.
Und du musst beten dass Dropbox nicht über https:// arbeitet. Weil das kann BB leider nicht so ohne weiteres.

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

DAK

BeitragMi, Jan 08, 2014 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Um den Link zu kriegen, einfach Rechtsklick auf das File was du herunterladen willst (im Dropbox-Ordner, also nicht im Web) und auf "Link freigeben", dann wird der Link in die Zwischenablage kopiert, sollte dann ungefähr so ausschauen:

Code: [AUSKLAPPEN]
https://www.dropbox.com/s/db15ie90a77096i/Erste%20Schritte.pdf

(Hier noch zu beachten: sobald du das machst, ist das File für jeden runterladbar, der an den Link kommt, wird also öffentlich freigegeben)

Leider sind die Links wirklich per https. Habe gerade geschaut, auch wenn man http statt dem https reinschreibt wird man automatisch umgeleitet.

Was du aber machen könntest ist dir ein Kommandozeilenprogramm zulegen, dass https-Downloads kann (wie z.B. das hier), was du dann in BlitzBasic per ExecFile ausführen kannst.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Britanny

Betreff: BB und Curl

BeitragMi, Jan 08, 2014 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst einmal vielen dank Eingeproggt und DAK und allen die sich die mühe gemacht haben das Posting zu lesen.


Ok! Smile
Nun weis ich das die Links der Dropbox https sind und BB es nicht unterstützt. Dabei ist's ja schon sehr praktisch mit dem Ordner auf seinen Rechner und den automatischen hochladen der Daten. Entweder ich suche mir eine Dropbox alternative oder ich muss das Problem mit https lösen.

Habe Curl nun installiert und versuche nun schon beinahe den ganzen Tag es am laufen zu bekommen. Leider ohne Erfolg. hm,... Wieder Ratlos

Code: [AUSKLAPPEN]
 

CO2

ehemals "SirMO"

BeitragMi, Jan 08, 2014 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehme an, dass "www.dropbox.com/s/ctf65uwlwyyo....rtf" bei execFile ein Übergabeparameter an das Programm sein soll? Wenn ja, bin ich mir nicht sicher, ob das so funktionieren kann (programmiere nur BMax, und dort funktioniert es nicht), weshalb ich in BMax extra eine Funktion erstellt habe, die Programme mit Übergabeparametern ausführen kann. Hier der BMax Code BlitzMax: [AUSKLAPPEN]
Function exec(progname:String, args:String, deletebat:Int = True)
If(progname <> "" And args <> "")
Local title:String = "temp." + progname + ".start.bat"

Local file:TStream = WriteFile(title)

WriteLine(file, "@echo off")
WriteLine(file, progname + " " + args)

CloseFile(file)

OpenURL(title)

If(deletebat = True)
DeleteFile(title)
EndIf
ElseIf(args = "") ' Aus Performance-Gründen wird darauf verzichtet, eine .bat-Datei anzulegen, falls keine Übergabe-Parameter an das auszuführende Programm übergeben werden. Daher ist es auch wichtig, Parameter immer bei args anzugeben
OpenURL(progname)
EndIf
End Function

(Den Code müsstest du evtl. noch auf BB anpassen)

Funktionsweise: Es wird eine .bat-Datei erstellt (Daher funktioniert diese Funktion nur auf Windows), welche dann über OpenURL (äquivalent dazu in BB ist denke ich mal ExecFile) ausgeführt wird. Diese startet das mit progname (Dateipfad) angegebene Programm mit den bei args aufgeführten Parametern. Mit deletebat kannst du steuern, ob die .bat nach dessen Ausführung gelöscht werden soll oder nicht.

Beispielaufruf:
BlitzMax: [AUSKLAPPEN]
Exec("C:\curl", "www.dropbox.com/s/ctf65uwlwyyo....rtf")
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

DAK

BeitragMi, Jan 08, 2014 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein nein, unter BB kann man auch ohne Probleme Parameter übergeben, das passt schon so. Man muss nur das Programm mit den richtigen Parametern ausführen:

-k für insecure-Modus, wo er die Zertifikate nicht überprüft (wird benötigt für HTTPS wenn man keine Zertifikate zur Verfügung stellen will)
-o filename um die Output-Datei zu spezifizieren oder
-O um die Datei unter dem Namen zu speichern, unter dem sie am Server liegen.

Code: [AUSKLAPPEN]
curl -k -O https://www.dropbox.com/s/db15ie90a77096i/Erste%20Schritte.pdf

Speichert die Datei im momentanen Ordner als "Erste Schritte.pdf"

Code: [AUSKLAPPEN]
curl -k -o meinTestFile.pdf https://www.dropbox.com/s/db15ie90a77096i/Erste%20Schritte.pdf

Speichert die Datei im momentanen Ordner als "meinTestFile.pdf"
Gewinner der 6. und der 68. BlitzCodeCompo
 

Britanny

Betreff: Dropbox öffen mit curl (https files öffnen)

BeitragDo, Jan 09, 2014 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ja klasse welche Lösungswege ihr gefunden habt. Vielen dank euch allen. Jetzt steht das Problem der https Downloads kurz vor [solved] Very Happy

Mithilfe von curl und den richtigen Einstellungen ist es möglich Dateien zuladen. Diese Dateien sind bei mir jedoch immer nur 1 kb groß. Egal ob ich nun eine Grafik oder eine Textdatei geladen habe. Zudem ist die Original Größe der Files in der Dropbox gleichsam unbedeutend. Die down geladene Files sind immer nur 1 kb groß. Wenn ich die down geladenen Files nun mit einem Texteditor öffne beinhalten diese etwas html code und ein token_hash.

Code: [AUSKLAPPEN]
<html>
  <head><title>Found</title></head>
  <body>
    <h1>Found</h1>
    <p>The resource was found at <a href="https://dl.dropboxusercontent.com/s/ctf65uwlwyyo8f3/Dokument.rtf?token_hash=AAFwLvcYlFE9LPZmjLpvSpuTFdrNIMhj_KDEg__gsQafgg">https://dl.dropboxusercontent.com/s/ctf65uwlwyyo8f3/Dokument.rtf?token_hash=AAFwLvcYlFE9LPZmjLpvSpuTFdrNIMhj_KDEg__gsQafgg</a>;
you should be redirected automatically.

<!--  --></p>
    <hr noshade>
    <div align="right">WSGI Server</div>
  </body>
</html>


Kopiere ich folgendes aus dem File heraus "https://dl.dropboxusercontent.com/s/ctf65uwlwyyo8f3/Dokument.rtf?token_hash=AAFwLvcYlFE9LPZmjLpvSpuTFdrNIMhj_KDEg__gsQafgg" und setze es im IExlorerer ein, öffnet sich die Windowsinterne Popup-Box und ich kann durch manuelles klicken nun das File speichern, öffnen oder aber die Aktion abbrechen. Nun soll aber nicht der User manuell den Download starten, sondern soll dieses automatsch vom Programm ausgeführt werden. Entweder muss da noch ein Parameter bei curl eingefügt werden, oder es müsste eine Blitzbasic Funktion programmiert werden die letztes automatisiert. Oder aber ich habe da etwas unberücksichtigt gelassen?

Noch mal Herzlichen dank an euch für eure Zeit und speziell an DAK, Co2 und Eingeproggt. Schon jetzt bin ich dank euch einen riesen Schritt weiter gekommen.

DAK

BeitragDo, Jan 09, 2014 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier noch mal den Link mittels "Link freigeben" zu holen. Es scheint mir von den Ausgaben her, als wäre der Link nicht mehr aktuell (kriege eine Meldung mit "permanently moved")
Gewinner der 6. und der 68. BlitzCodeCompo

BtbN

BeitragFr, Jan 10, 2014 5:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Dropbox erlaubt nur schlicht keine direkt downloads mehr.
 

Britanny

Betreff: curl, dropbox und https download

BeitragSa, Jan 11, 2014 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider bleiben alle Lösungsversuche problematisch und sind nicht optimal einsetzbar.

Ein paralleler Versuch via einer gewöhnlichen Homepage verspricht mir da momentan mehr. Da alles über http läuft kann man Bilder und Texte ganz einfach darüber laden. Sowohl auf Festplatte als auch als Data direkt im Speicher (Programm). Ich denke aber das hier sehr gute Ansätze gefunden worden sind die dazu führen werden auch mal Dropbox und Co (https) zu nutzen. Nur eine frage der Zeit Smile
Danke euch allen für eure hilfreichen Tipps und werde mich vorerst einen neuen Thema zuwenden.

Besondern dank an, Eingeproggt, DAK, CO2, BtbN und alle anderen die sich mit dem Thema beschäftigt haben.

lg Britanny

DAK

BeitragSa, Jan 11, 2014 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich könnte dir da www.lima-city.de empfehlen. Bin dort schon seit so ~5 Jahren und finde die super. Gratis werbefreier Host, der dir (auf dem Downloadserver) erlaubt, auch Sachen, die nicht-Websiten-Dateien zwischenzulagern. Dafür geht der Direktdownload auch.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Britanny

Betreff: ...

BeitragSo, Jan 12, 2014 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den link DAK, denke das werde ich dort gut nutzen. Bin auch gerade dabei mir einiges an HTML anzueignen. THX lg Britanny
 

Britanny

Betreff: Zusammenfassung download von Dropbox

BeitragSo, Jan 12, 2014 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe nun einen ziemlichen Spagetti-Code *schäm* zusammengewürfelt der aber funktioniert bei mir. Ist sehr langsam und schlecht strukturierte. Sry. Sollte eine schöne Funktion werden. Aber meine Zeit ist momentan stark begrenzt (Jobsuche). Dennoch möchte ich euch den Code nicht vorenthalten Smile

Code: [AUSKLAPPEN]


Graphics 1280, 480, 32, 2

Function LoadWebFile( srcFile$, dstFile$ )
   Local TCPStream, tmpPos, dataSize, tmpBank
   Local Host$ = "", HTTPHeader$ = ""
   
   If ( Left( srcFile$, 7 ) = "http://" ) srcFile$ = Right( srcFile$, Len( srcFile$ ) - 7 )
      
      tmpPos = Instr( srcFile$, "/" )
      
      If ( tmpPos ) Then
         Host$ = Left( srcFile$, tmpPos - 1 )
         srcFile = Right( srcFile$, Len( srcFile ) - tmpPos + 1 )
      Else
         Host$ = srcFile$
         srcFile$ = "/"
      End If
      
      TCPStream = OpenTCPStream( Host$, 80 )
      
      If ( Not TCPStream ) Then
         RuntimeError( "Fehler beim verbinden zu: " + Host$ )
      End If
      
      WriteLine( TCPStream, "GET " + srcFile$ + " HTTP/1.1" )
      WriteLine( TCPStream, "Host: " + Host$ )
      WriteLine( TCPStream, "Accept: */*" )
      WriteLine( TCPStream, Chr$( 10 ) )
      
      Repeat
         HTTPHeader$ = ReadLine( TCPStream )
         
         If ( Left( HTTPHeader$, 16 ) = "Content-Length: " ) Then
            dataSize = Right( HTTPHeader$, Len( HTTPHeader$ ) - 16 )
         End If
      Until HTTPHeader$ = "" Or Eof( TCPStream )
      
      If ( dataSize > 0 )
         file = WriteFile( dstFile$ )
         tmpBank = CreateBank( 65536 )
         
         If ( Not file ) Then
            RuntimeError( "Fehler beim erstellen der Downloaddatei" )
         End If
         
         Repeat         
            s = ReadBytes( tmpBank, TCPStream, 0, 65536 )
            WriteBytes( tmpBank, file, 0, s )
         Until s <> 65536
         
         CloseFile( file )
         CloseTCPStream( TCPStream )
         FreeBank( tmpBank )
      End If
End Function


x$="C:Downloads\curl-7.34.0-rtmp-ssh2-ssl-sspi-zlib-winidn-static-Bin-w64\curl-7.34.0-rtmp-ssh2-ssl-sspi-zlib-winidn-static-Bin-w64/curl.exe -k -o " ; Verzeichniss der curl.exe

y$="c:\Games\Amberworlds/" ; Verzeichniss in dem das Textfile mit dem Tocken gespeichert werden soll
Df$="neu2.txt" ; Filename und Filetyp unter der gespeichert werden soll !!! Textfile !!! Tocken !!!
ExecFile x$+y$+Df$+" https://www.dropbox.com/s/ozdupykca377yjb/213.bmp" ; Link zu einer von mir bisher frei gegebener Grafikdatei


Delay 3000 ; Aus irgendeinem Grund muss hier eine Zeitverzögerung rein ???


File = ReadFile(y$+Df$)     ;Datei öffnen

While Not Eof(file)
   
   T$ = ReadLine(file)
   
   If Instr(T$,"href=",1) > 0 Then
      st = Instr(T$,"https://",1)
      en = Instr(T$,">https://",1)
      
      newT$="http"+Mid$(T$,st+5,(en-st)-6)
      
      Print newT$
      
      
      LoadWebFile( newT$, y$+"neu2.bmp" ) ; Hier der eigendlich Droipbox download. Hier noch mit Hand den Filenamen und den Filetyp angegeben
      
      
      End
      
   EndIf
   
   Print T$
   
Wend

CloseFile File   


Print "Press ESC again To quit this!"
Repeat
   
Until KeyHit(1)

WaitKey

End




lg & entspannendes Wochenende Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group