使用Dropbox Chooser从dropbox中选择文件后,如何将文件存储在我的服务器中

时间:2013-07-29 12:07:36

标签: dropbox

我的网站上有一个表单。表单允许用户从本地计算机中选择文件或从下拉框中选择文件。 我知道如何从本地机器获取文件,然后通过执行一些PHP内容将其存储在服务器中。

我对投放箱进行了研究,发现他们制作了一款名为“Chooser - Dropbox”的东西。 (基本上,它是一个小型JavaScript组件,可以让我们的网络应用程序从Dropbox获取文件),我们可以将“选择器”整合到我们的网络中,这真是太棒了。

但我的问题是,我不知道如何在使用其选配器从dropbox中选择文件后将文件存储在我的服务器中。 (我基本上想从Chooser中选择文件后下载该文件并存储在我的服务器中)

这是DropBox希望我们在我们的网站上放置的用于Chooser工作的java脚本

<script type="text/javascript" src="https://www.dropbox.com/static/api/1/dropins.js" id="dropboxjs" data-app-key="aeujnjf6pvgjbst"></script>  

这是代码。 (用于存储本地计算机文件的PHP)

if(isset($_POST) && empty($_POST) == false){
    $file_name = $_POST['file_name'];

    //to store the files selected from local machine
    $file_local = $_FILES['file_local']['name'];
    $file_temp = $_FILES['file_local']['tmp_name'];
    move_uploaded_file($file_temp, 'localhost/projects/');

    //to store the files selected from dropbox
    $file_dropbox = ------ //This is where I am stuck and dont know what to do next

这就是形式:

<form action="" method="post" enctype="multipart/form-data">
    <input type="text" name="file_name" />
    <input type="file" name="file_local" />

    <!-- input block from dropBox.  -->
    <input type="dropbox-chooser"  data-multiselect="true" data-link-type="direct" name="file_dropbox" style="visibility: hidden;"/>

    <input type="submit" value="upload files">
</form>

1 个答案:

答案 0 :(得分:1)

您将在服务器上获得的是名为“selected-file”的字段中以逗号分隔的URL列表。

所以$_POST['selected-file']应该看起来像http://example.com/first/url, http://example.com/second/url。您需要在逗号上拆分列表,从给定的URL下载每个文件,然后将它们保存到磁盘。

修改

这是一个完整的PHP样本,用于下载通过Chooser选择的多个文件。请务必输入您自己的Drop-ins应用密钥:

<!doctype html>
<html>
<head>
    <script type="text/javascript" src="https://www.dropbox.com/static/api/1/dropins.js" id="dropboxjs" data-app-key="<YOUR APP KEY>"></script>
</head>
<body>
    <form method="post">
        <input type="dropbox-chooser" name="selected-file" style="visibility: hidden" data-multiselect="true" data-link-type="direct" />
        <input type="submit" />
    </form>
</body>
</html>

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    foreach (explode(', ', $_POST['selected-file']) as $url) {
        $curl = curl_init($url);
        $file = fopen(basename($url), 'wb');
        curl_setopt($curl, CURLOPT_FILE, $file);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_exec($curl);
        curl_close($curl);
        fclose($file);
    }
}

?>