【发布时间】:2014-01-20 09:27:29
【问题描述】:
我正在尝试使用 php 和 Zend 框架在 BOX_API 中上传文件。但我错过了一些东西。这是我第一次使用这样的界面,我读过manual。但这对我来说很混乱。我的问题是两个:
-首先,为什么您必须将文件名而不是具有正确标题的整个文件传递给 post 调用以进行文件上传?表单中的文件上传不像通过 post 调用传递文件名;
-其次,我是否必须制作一个用于文件上传的表单,或者只是一个文本区域,用于写入要传递给 BOX-API 的文件名?
更新: 这是我上传表单的代码:
$form = new Zend_Form;
$form->setAction('/imball-reagens/public/upload')
->setMethod('post');
$file = new Zend_Form_Element_File('file');
$file->setLabel('Choose a file to upload:');
$file->addValidator('alnum');
$file->setRequired(true);
$form->addElement($file);
$access_token = new Zend_Form_Element_Hidden(array('name' => 'access_token', 'value' => $result->access_token));
$form->addElement($access_token);
$refresh_token = new Zend_Form_Element_Hidden(array('name' => 'refresh_token', 'value' => $result->refresh_token));
$form->addElement($refresh_token);
$form->addElement('submit', 'upload', array('label' => 'Upload File'));
echo $form;
这是表单后面的 box API 的 POST cal:
$access_token= $this->getRequest()->getParam('access_token');
$client = new Zend_Http_Client('https://upload.box.com/api/2.0/files/content');
$client->setMethod(Zend_Http_Client::POST);
$client->setHeaders('Authorization: Bearer '.$access_token);
$data = $_FILES["file"]["name"];
$client->setParameterPost(array(
'filename' => '@'.$data,
'parent_id' => '0'
));
$response = $client->request()->getBody();
$this->view->response= $response;
$result = json_decode($response);
它抛出的错误如下:
{"type":"error","status":400,"code":"invalid_request_parameters","help_url":"http:\/\/developers.box.com\/docs\/#errors","message":"Invalid input parameters in request","request_id":"172518183652dcf2a16af73"}
【问题讨论】:
标签: file-upload box-api