2

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

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

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

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

1 回答 1

1

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

所以$_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);
    }
}

?>
于 2013-07-30T01:00:38.037 回答