2012-12-04 109 views
3

表格最后2天我正在尝试修复使用php在Box.net中上传文件的问题。如何使用box.net API上传文件?

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

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

我按照@GBD给出的指导编辑了我的代码,现在我面临着另一个问题。

我选择的文件没有上传,而是上传了一些.tmp file。 当我在$_POST['new_file1']硬编码文件路径,它成功上传正确的文件。 我得到的文件路径有点像这样C:\wamp\tmp\php1A.tmp没有实际的文件路径,当我回显$_FILES['new_file1']['tmp_name']

任何人都可以告诉我如何从$_FILES获得文件路径?这样我就可以把它传递给$发布

以下是我的代码:

<?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> 

请帮助我。

在此先感谢。

+0

确保你有正确的Content-Type和/或加密类型按箱API文档。 – anataliocs

+0

它提供了所有用于调试的数据。 'upload_no_files_found'意味着它的状态,你应该检查你是否真的在请求中提供任何文件。如果你这样做,你会发现你实际上不提供任何文件,因为PHP文件位于$ _FILES而不是'$ _POST'中。 – Ranty

回答

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; 
?> 
+0

感谢您的答复。但仍然没有上传正确的文件,而是上传了一些'.tmp'文件。另外'$ tempfile'的值是'C:\ wamp \ tmp \ php1A.tmp',而不是实际的文件位置。请更改我需要做的事情吗? –

+0

我面临同样的问题,你有没有得到任何解决方案上述点? – WordpressCoder