2016-04-19 22 views
0

Wir haben ein Backend-System, wo bei einem Formular ausfüllen, eine PDF generiert wird - diese PDF wird dann in Dropbox hochgeladen und ein Link zu der Datei abgerufen, die dann in die Datenbank aufgenommen wird und sichtbar ist unsere Verkäufer.Abrufen permanenter Links von Dropbox

Ich habe hoch und niedrig gesucht - aber die einzige Möglichkeit, diese Links zu erhalten, ist die Verwendung der createTemporaryDirectLink Direktive. Diese Links sind jedoch temporär und verfallen nach ein paar Stunden.

Ich suche sharable nicht auslaufende Links.

Hier ist mein aktueller Code,

// Dropbox // 
     $dropbox_config = array(
     'key' => 'xxxx', 
     'secret' => 'xxxx' 
     ); 

     $accessToken='xxx-xxxxx'; 

     $appInfo = dbx\AppInfo::loadFromJson($dropbox_config); 
     $webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0"); 


     $dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0"); 

     $sqlQuery = "select dropboxLink from get_order where orderId='".$lastOrderId."'"; 
     $rsGetDropLink = mysqli_query($dbLink,$sqlQuery); 
     $rowGetDropLink = mysqli_fetch_assoc($rsGetDropLink); 

     $f = fopen("Orders/".$rowGetDropLink['dropboxLink'].'.pdf', "rb"); 
     $result = $dbxClient->uploadFile("/Orders/".$rowGetDropLink['dropboxLink'].'.pdf', dbx\WriteMode::add(), $f); 
     fclose($f); 
     print_r($result); 

     $file = $dbxClient->getMetadata("/Orders/".$rowGetDropLink['dropboxLink'].'.pdf'); 
     $dropboxPath = $file['path']; 
     $pathError = dbx\Path::findError($dropboxPath); 
     if ($pathError !== null) { 
     fwrite(STDERR, "Invalid <dropbox-path>: $pathError\n"); 
     die; 
     } 
     $link = $dbxClient->createTemporaryDirectLink($dropboxPath); 
     $dw_link = $link[0]."?dl=1"; 

     $sqlQuery = "update get_order set fullDropboxLink='".$dw_link."' where orderId='".$lastOrderId."'"; 
     mysqli_query($dbLink,$sqlQuery); 

     // Dropbox ends// 
     header("location: thankyou.php?ordId=".$lastOrderId.'&categoryId='.$_REQUEST['categoryId']); 

gut funktioniert Wie Sie sehen können, wir die createTemporaryDirectLink Methode verwenden, die zu einem temporären Link führt geholt, die Überstunden abgelaufen.

Unsere Lieferanten überprüfen diese Dateien oft alle zwei Tage - dies ist also eine nicht verwendbare Lösung.

Antwort

0

Statt die createTemporaryDirectLink Methode zu verwenden, können Sie die createShareableLink Methode verwenden:

https://dropbox.github.io/dropbox-sdk-php/api-docs/v1.1.x/class-Dropbox.Client.html#_createShareableLink

Dadurch erhalten Sie einen gemeinsamen Link, der nicht abläuft. Es gibt jedoch ein paar Dinge zu beachten:

  • Diese Links können widerrufen werden. Der Link wird auf der Seite https://www.dropbox.com/links des Benutzers angezeigt.
  • Diese Links verweisen standardmäßig auf eine Vorschauseite, nicht auf den Dateiinhalt selbst.

Der letzte Punkt kann hier allerdings gezeigt angesprochen werden:

https://www.dropbox.com/help/201

+0

Hallo Greg, sollte ich mit createShareableLink ersetzen createTemporaryDirectLink gerade oder wird eine Überholung als auch der Code benötigen? – user1595112

+0

Die Rückgabewerte weichen leicht voneinander ab, daher müssen Sie Ihren Code entsprechend anpassen. – Greg

Verwandte Themen