0

Curlを使ってURLに画像をアップロードしたい。しかし、画像ファイルが https url にあるため、fopen を使用してファイルを読み取ることができません。

コードは以下の通りです。

$file = "https://xyz.com/image.jpg";
$url = "http://abc.com/upload.php";

$fp = fopen($file, "r");
$headers = array("Content-Type: xml");
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$responseInfo = curl_getinfo($ch);
curl_close($ch);
4

2 に答える 2

2

アップロードするファイルデータを名前付きのキーと値のペアとして渡す必要がないと仮定すると、これはうまくいくはずです。

$file = "https://xyz.com/image.jpg";
$url = "http://abc.com/upload.php";

$fileData = file_get_contents($file);

$fp = fopen($file, "r");
$headers = array("Content-Type: xml");
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fileData);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$responseInfo = curl_getinfo($ch);
curl_close($ch);
于 2012-11-22T14:22:19.187 に答える
0

それ以外の:

curl_setopt($ch, CURLOPT_PUT, true);

PUT API リクエストの opt 設定は、以下の設定を使用すると正常に機能します。

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
于 2013-09-13T07:32:28.277 に答える