使用XAMPP PHP将文件上传到Dropbox

时间:2014-02-03 07:56:08

标签: php file-upload xampp dropbox-api

我正在尝试将文件上传到Dropbox。我在Windows上并使用XAMPP。这就是我所拥有的。

# Include the Dropbox SDK libraries
require_once "dropbox-sdk/Dropbox/autoload.php";

use \Dropbox as dbx;

$appInfo = dbx\AppInfo::loadFromJsonFile("../view/configs/json_config.json");
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "MyApp");

$authorizeUrl = $webAuth->start();

echo "1. Go to: " . $authorizeUrl . "\n";
echo "2. Click \"Allow\" (you might have to log in first).\n";
echo "3. Copy the authorization code.\n";

//   $fp=fopen("php://stdin", "r");
//   $in=fgets($fp,4094);
//   fclose($fp);
define('STDIN',fopen("C://xampp/php/php.exe", "r"));
if (PHP_OS == 'WINNT') {
  echo '$ ';
$line = trim(fgets(STDIN)); // reads one line from STDIN
//$line = stream_get_line(STDIN, 1024, PHP_EOL);
//$read = str_replace("\r\n", "", $in);
} 
else {
//$line = readline('$ ');
$line = str_replace("\n", "", $in);
}


//$authCode = \trim(\readline("Enter the authorization code here: "));

list($accessToken, $dropboxUserId) = $webAuth->finish($line);
print "Access Token: " . $accessToken . "\n";

$dbxClient = new dbx\Client($accessToken, "MyApp");
$accountInfo = $dbxClient->getAccountInfo();

print_r($accountInfo);

$f = fopen("working-draft.txt", "rb");
$result = $dbxClient->uploadFile("/working-draft.txt", dbx\WriteMode::add(), $f);
fclose($f);
print_r($result);

$folderMetadata = $dbxClient->getMetadataWithChildren("/");
print_r($folderMetadata);

$f = fopen("working-draft.txt", "w+b");
$fileMetadata = $dbxClient->getFile("/working-draft.txt", $f);
fclose($f);
print_r($fileMetadata);

我找到了here

现在我在尝试执行此代码时遇到了问题,因为此代码最初使用的是Windows不支持的readline函数(或库)。我找到了一个我正在尝试使用的替代品,但它不起作用。

目前,这是我得到的错误:

“未使用的异常'Dropbox \ Exception_BadRequest',第251行的...... \ RequestUtil.php中有消息'。”

我不知道如何让这个工作。有没有人在使用XAMPP的Windows上成功完成此操作?

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

这里的错误是有道理的...看起来你的代码试图读取php.exe的内容,这听起来不是一个好主意。 :-)这就是为什么字符串是“......这个程序不能在DOS模式下运行。”

但如果你不重新定义STDIN,$line = trim(fgets(STDIN))看起来合情合理。当你跑步时会发生什么?

答案 1 :(得分:0)

它会抛出一个异常,因为您对DropBox的请求有问题。

要获取更多调试信息,请在try / catch块中放置所有 DropBox方法调用,例如:

try
{
  $authorizeUrl = $webAuth->start();
}
catch (dbx\WebAuthException_BadRequest $e) {
  var_dump($e); // Will returned detailed information about the error
}

这应该让你在确定原因的正确轨道上开始。