【问题标题】:How can I store the files in my server after picking the files from dropbox with the dropbox Chooser使用保管箱选择器从保管箱中挑选文件后,如何将文件存储在我的服务器中
【发布时间】:2013-07-31 04:39:22
【问题描述】:

我的网站中有一个表格。这些表单允许用户从他们的本地机器中选择文件或从下拉框中选择文件。 我知道如何从本地机器获取文件,然后通过做一些 PHP 的东西将其存储在服务器中。

我对 drop box 进行了研究,发现他们制作了一个名为“Chooser - Dropbox”的东西。 (基本上,它是一个小的 JavaScript 组件,使我们的网络应用程序能够从 Dropbox 获取文件)而且我们可以将“Chooser”集成到我们的网络中,这真是太神奇了。

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

这是 DropBox 想要我们放入网络中以供选择器工作的 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>

【问题讨论】:

    标签: dropbox


    【解决方案1】:

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

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

    编辑

    这是一个完整的工作 PHP 示例,用于下载通过选择器选择的多个文件。请务必输入您自己的 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);
        }
    }
    
    ?>
    

    【讨论】:

    • 由于 url 的 SSL,我不得不添加 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多