我已经设置了一个HTML表单来选择一个文件,并将其提交给将上传它的PHP脚本。我无法使用move_uploaded_files()
,因为Box的API要求我为Authorization: access_token
添加HTTP标头。我所做的是使用cURL库设置我自己的POST方法。
我遇到的问题是正确设置文件名,因为它需要文件的完整路径。我无法从HTML表单中获取文件的完整路径,并使用$_FILES['filename']['tmp_name']
上传我不想要的.tmp文件。有谁知道这个问题的解决方案?非常感谢!
我的代码:
public function upload_file($file) {
$url = 'https://api.box.com/2.0/files/content';
$params = [
'filename' => '@'.$file['tmp_name'],
'folder_id' => '0'
];
$header = "Authorization: Bearer ".$this->access_token;
$data = $this->post($url, $params, $header);
}
public function post($url, $params, $header='') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
if(!empty($header)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
}
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
答案 0 :(得分:0)
建议您执行以下操作之一:
我想到的另一个问题是你如何保持access_token刷新?
答案 1 :(得分:0)
我同意Vishal在第一点所建议的内容。
我已经为v2编写了PHP SDK
只需包含api类并启动课程:
<?php
include('library/BoxAPI.class.php');
$client_id = 'CLIENT ID';
$client_secret = 'CLIENT SECRET';
$redirect_uri = 'REDIRECT URL';
$box = new Box_API($client_id, $client_secret, $redirect_uri);
if(!$box->load_token()){
if(isset($_GET['code'])){
$token = $box->get_token($_GET['code'], true);
if($box->write_token($token, 'file')){
$box->load_token();
}
} else {
$box->get_code();
}
}
// Upload file
$box->put_file('RELATIVE FILE URL', '0'));
?>