如何使用box.net API上传文件?

时间:2012-12-04 17:26:57

标签: php forms curl box-api

表格最近2天我正在尝试修复使用php在Box.net上传文件的问题。

我已经浏览了Box.net API文档并复制了他们提供的示例代码,他们给出的代码 - 完美上传文件,但它重定向到打印服务器响应的页面(XML响应)。

我不想向用户显示此类屏幕,而是我想阅读这些数据并根据该响应显示我的消息。

我根据@GBD提供的指导编辑了我的代码,现在我正面临另一个问题。

我选择的文件无法上传,而是上传了一些.tmp file。 当我在$_POST['new_file1']中对文件路径进行硬编码时,它成功上传了正确的文件。 当我回显C:\wamp\tmp\php1A.tmp时,我得到的文件路径就是这个$_FILES['new_file1']['tmp_name']而不是实际的文件路径。

任何人都可以告诉我如何从$_FILES获取文件路径?所以我可以将它传递给$ post

以下是我的代码:

<?php
$upload_url = 'https://upload.box.net/api/1.0/upload/i9g1fmnnddfdr4739sxvbpXXXXXXXX/480416060';
$tmpfile = $_FILES['new_file1']['tmp_name'];
$filename = basename($_FILES['new_file1']['name']);
$_POST['new_file1'] = '@'.$tmpfile;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $upload_url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); 
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
<form action=""
  enctype="multipart/form-data" accept-charset="utf-8" method="POST">
<input type="file" name="new_file1" />
<input type="text" name="share" value="1" />
<input type="submit" name="upload_files" value="Upload File" />
</form>

请帮帮我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试

<?php

$tmpfile = $_FILES['new_file1']['tmp_name'];
$filename = basename($_FILES['new_file1']['name']);

$_POST['new_file1'] = '@'.$tmpfile;

$upload_url = 'https://upload.box.net/api/1.0/upload/i9g1fmnnddfdr4739sxvbpXXXXXXXX/480416060';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $upload_url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); 
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>