我的网站上有一个表单。表单允许用户从本地计算机中选择文件或从下拉框中选择文件。 我知道如何从本地机器获取文件,然后通过执行一些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>
答案 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);
}
}
?>