Mit PHP eine (https) dropbox-Freigabe auslesen
Hallo liebe Gemeinde,
hallo Timo Beil,
ich habe eine Frage die wohl einfach zu beantworten ist.
Ich habe ein PHP-script am Laufen, das Bilder aus einem Verzeichnis (www.d@u.de/verzeichnis) darstellt. Funktioniert alles ok.
Jetzt woran ich gescheitert bin:
Ich möchte das Verzeichnis aus dem die Bilder ausgelesen werden umstellen auf eine Dropbox-Freigabe (https://www.dropbox.com/sh/fsdlifu484ls3jf8slf/skdjfllsdksdfsdfsdfsdf) - ja der Link ist hier in diesem Beispiel ungültig)
Hier der akuelle - nicht - funktionierende Code, bei dem ich (in meiner Blauäugigkeit) einfach den Originaleintrag "images" (der ein Ordner also www.d@u.de/images ist) abgeändert in den Dropboxlink.
Meine Frage ist nun wie ich den Code anpassen muss, dass er die Bilder die in der Dropboxgalerie sind anzeigt also drauf zugreifen kann.
Vielen Dank für Ideen und Tipps.
Peter
hallo Timo Beil,
ich habe eine Frage die wohl einfach zu beantworten ist.
Ich habe ein PHP-script am Laufen, das Bilder aus einem Verzeichnis (www.d@u.de/verzeichnis) darstellt. Funktioniert alles ok.
Jetzt woran ich gescheitert bin:
Ich möchte das Verzeichnis aus dem die Bilder ausgelesen werden umstellen auf eine Dropbox-Freigabe (https://www.dropbox.com/sh/fsdlifu484ls3jf8slf/skdjfllsdksdfsdfsdfsdf) - ja der Link ist hier in diesem Beispiel ungültig)
Hier der akuelle - nicht - funktionierende Code, bei dem ich (in meiner Blauäugigkeit) einfach den Originaleintrag "images" (der ein Ordner also www.d@u.de/images ist) abgeändert in den Dropboxlink.
<div id="galerie">
<?php
$ordner = "https://www.dropbox.com/sh/fsdlifu484ls3jf8slf/skdjfllsdksdfsdfsdfsdf";
$allebilder = scandir($ordner);
Meine Frage ist nun wie ich den Code anpassen muss, dass er die Bilder die in der Dropboxgalerie sind anzeigt also drauf zugreifen kann.
Vielen Dank für Ideen und Tipps.
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 209077
Url: https://administrator.de/contentid/209077
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo,
Ich kann dir zwar die Frage leider nicht beandworten, aber ich habe einen kleinen denkansatz. Screencrapping z.B., oder aber die Dropbox als XML zu laden und dann auszulesen. Mann kann aber auch einfach (Stichwort Screencrapping) mit Regex die Elemente mit den Bildern Raussuchen lassen und so einfach dass abfragen was man braucht. Die Billder kommen dann in eine Liste und daraus machst du dann die Gallerie. Sry aber ich habe es nicht so mit PHP, ich komme ehr aus der ASP.NET ecke.
LG, Herbrich
Ich kann dir zwar die Frage leider nicht beandworten, aber ich habe einen kleinen denkansatz. Screencrapping z.B., oder aber die Dropbox als XML zu laden und dann auszulesen. Mann kann aber auch einfach (Stichwort Screencrapping) mit Regex die Elemente mit den Bildern Raussuchen lassen und so einfach dass abfragen was man braucht. Die Billder kommen dann in eine Liste und daraus machst du dann die Gallerie. Sry aber ich habe es nicht so mit PHP, ich komme ehr aus der ASP.NET ecke.
LG, Herbrich
Moin,
also so einfach wie mit einem echtem Verzeichnis geht das nicht !
Immerhin muss man sich ja auch irgendwie authentifizieren, sonst hätte ja jeder Zugriff Oo
https://www.dropbox.com/developers/core/start/php
~Arano
(Ich besitze keine DropBox oder ähnliches)
also so einfach wie mit einem echtem Verzeichnis geht das nicht !
Immerhin muss man sich ja auch irgendwie authentifizieren, sonst hätte ja jeder Zugriff Oo
https://www.dropbox.com/developers/core/start/php
~Arano
(Ich besitze keine DropBox oder ähnliches)
...mit scandir() wirst du nicht weit kommen - schau mal: http://php.net/manual/en/function.file-get-contents.php oder http://php.net/manual/en/book.curl.php
Hallo Peter,
hab mir so eine Dropbox-Seite mal näher angeschaut und dir folgendes gebaut:
(den Link zu deiner Dropbox-Seite gibst du in der Variablen
Die erste Function ist nur dazu da sich den kompletten HTML-Content der Seite zu holen. Ich weiß es gibt dafür in PHP extra Funktionen aber diese sind bei vielen Hostern aus Sicherheitsgründen nicht verwendbar; deshalb die Function mit CURL die bei den meisten Hosting-Paketen funktioniert.
Das Script extrahiert die URLs der Vorschaubilder(via RegEx) von der Seite und verlinkt dann die Bilder mit der Dropbox-Seite auf dem man das Original-Bild ansehen kann.
Um aus der ersten Seite das Original-Bild in voller Größe zu erhalten müsste man dazu dem Link zu jedem Bild folgen da man das Original-Bild erst dort extrahieren kann.
Denke das sollte dich deinem Vorhaben einen Schritt weiter bringen...
Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
hab mir so eine Dropbox-Seite mal näher angeschaut und dir folgendes gebaut:
(den Link zu deiner Dropbox-Seite gibst du in der Variablen
$urlDropBox
an.)function fread_url($url,$ref="")
{
if(function_exists("curl_init")){
$ch = curl_init($url);
$user_agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)";
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt( $ch, CURLOPT_HTTPGET, 1 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
curl_setopt( $ch, CURLOPT_REFERER, $ref );
$html = curl_exec($ch);
curl_close($ch);
}
else{
$hfile = fopen($url,"r");
if($hfile){
while(!feof($hfile)){
$html.=fgets($hfile,1024);
}
}
}
return $html;
}
$urlDropBox = "https://www.dropbox.com/sh/xxxxxxxxxxxxxxxxxxxxx";
$sHTML = fread_url($urlDropBox);
preg_match_all('/<a href=\"([^"]*)\"[^>]*><img data-src=\"([^"]*)\" data-fail-src=\"[^"]*\"/',$sHTML,$matches);
for ($i=0;$i<count($matches[1]); $i++){
echo '<p><a href="'.$matches[1][$i].'"><img src="'.$matches[2][$i].'" ></a></p>>';
}
Das Script extrahiert die URLs der Vorschaubilder(via RegEx) von der Seite und verlinkt dann die Bilder mit der Dropbox-Seite auf dem man das Original-Bild ansehen kann.
Um aus der ersten Seite das Original-Bild in voller Größe zu erhalten müsste man dazu dem Link zu jedem Bild folgen da man das Original-Bild erst dort extrahieren kann.
Denke das sollte dich deinem Vorhaben einen Schritt weiter bringen...
Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
Beispiel mit ASP.NET
(Zeile3 noch die URL zur Dropbox-Seite mit den Bildern eintragen) Public allImages As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim urls As Collection = getDropBoxImages("[URL ZUR DROPBOXSEITE MIT DEN BILDERN]")
For Each url In urls
allImages &= "<div style=""float:left; margin:5px""><a href=""" & url(1) & """><img src=""" & url(0) & """></a></div>"
Next
End Sub
'Returns Urls of DropBox-Images as a Collection
Public Function getDropBoxImages(ByVal strURL As String) As Collection
Dim shtml As String = New System.Net.WebClient().DownloadString(strURL)
Dim matches As RegularExpressions.MatchCollection = New RegularExpressions.Regex("<a href=\""([^""]*)\""[^>]*><img data-src=\""([^""]*)\"" data-fail-src=\""[^""]*\""").Matches(shtml)
If matches.Count > 0 Then
Dim urls As New Collection
Dim counter As Int32 = 0
For Each m As RegularExpressions.Match In matches
counter += 1
urls.Add({m.Groups(2).Value, m.Groups(1).Value}, counter)
Next
Return urls
else
Return Nothing
End If
End Function
<%= allImages%>
gelöste Beitrage bitte auch als solche markieren.Danke
Hallo,
Hey echt vielen Dank. Hat der Script ein © oder darf man ihn umbauen?? Den ich würde dann die URL nicht eintragen sondern eine Altanative Methode Nutzen, also eine Zweite Funktion machen die dann endweder auf eine DB zugreift, ein Postback, ein Get Parameter nutzt oder ein Steuerelement (wie TextBox o.ä,) Abfragt.
Aber echt vielen Dank für den Script.
LG, Herbrich
Hey echt vielen Dank. Hat der Script ein © oder darf man ihn umbauen?? Den ich würde dann die URL nicht eintragen sondern eine Altanative Methode Nutzen, also eine Zweite Funktion machen die dann endweder auf eine DB zugreift, ein Postback, ein Get Parameter nutzt oder ein Steuerelement (wie TextBox o.ä,) Abfragt.
Aber echt vielen Dank für den Script.
LG, Herbrich
kannst du verwenden wie du willst, ist von mir ...Viel Spaß