經過幾個小時的研究,我無法解決PHP和cURL的問題。用cURL發送文件
當我嘗試直接從窗體發送文件時,捲曲正常工作。
<form method="post" action="" enctype="multipart/form-data">
<input name="file" type="file" /> <br />
<input name="submit" type="submit" value="Upload" />
</form>
<?php
$temp = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];
$post = array (
'file' => '@'. $temp
);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
$exec = curl_exec ($ch);
curl_close ($ch);
?>
上述代碼工作正常。當我嘗試使用您的表單時,文件被正確發送。
我的問題是我需要發送已經在服務器上的文件。
我嘗試了文件「C:/xampp/htdocs/test/photos.zip」的完整路徑,但由於某種原因,不起作用。
$post = array (
'file' => '@C:/xampp/htdocs/test/photos.zip'
);
有誰知道我該如何發送已經發送到服務器的文件?
編輯:
upload.php的(服務器)
<?php
error_reporting(E_ALL);
$upload = $_FILES['file'];
move_uploaded_file($upload['tmp_name'], 'photos.zip');
?>
myuploadtest.php(本地主機)
<form action="" method="post" enctype="multipart/form-data">
<input name="file" type="file" /><br />
<input name="submit" type="submit" value="Upload" />
</form>
<?php
$temp = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];
$post = array(
'file' => '@'.$temp
);
$url = "http://www.mysite.com/upload.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$exec = curl_exec($ch);
curl_close($ch);
?>
uploadcurl.php(本地主機)
<?php
$post = array(
'file' => '@C:/xampp/htdocs/test/photos.zip'
);
$url = "http://www.mysite.com/upload.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$exec = curl_exec($ch);
curl_close($ch);
?>
謝謝提前。
如果你發送的文件已經存在或者是一個上傳臨時文件,PHP根本不會在意。檢查PHP實際上是否可以讀取photos.zip文件,並且如果您已經控制了接收服務器,請查看該端的上傳狀態。 –
好的,令人困惑;服務器到客戶端或客戶端到服務器?你好,Marc。 – craig1231
Hi Marc。是的,我可以閱讀該文件。服務器在這兩種情況下都返回空頁面,但臨時文件正在正確發送。 –