数時間の調査の後、PHP と 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);
?>
前もって感謝します。