2012-12-04 62 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