如何在php curl中写这个

时间:2012-08-28 21:18:21

标签: php curl picasa

我想使用curl将图片上传到Google picasa,我发现这行代码使用curl将图片上传到Google picasa但我不知道如何将其转换为php和curl以便能够使用它

curl --silent --request POST --data-binary "@sweeping_the_rock.png" --header "Slug: Sweeping the rock" --header "Content-Type: image/png" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/5113621341847124417" | tidy -xml -indent -quiet

$file = "C:/Users/Michael/Desktop/182178_271150652992340_118089494_n.jpg";
$postimg = "https://picasaweb.google.com/data/feed/api/user/userId/albumid/albumId";
$header = array("Content-Type: image/jpeg",
         "Content-Length: ".filesize($file),
         "Authorization: GoogleLogin auth=$token",
         "Slug: 182178_271150652992340_118089494_n.jpg"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $postimg);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($file));
$hasil = curl_exec($ch);
curl_close($ch);

来源:https://developers.google.com/gdata/articles/using_cURL#media-support

1 个答案:

答案 0 :(得分:0)

也许您没有正确发送文件。你需要添加CURL_OPTs进行文件上传,这样才能进行mime编码并正确传输(POST文件上传是一种完全不同的形式编码,然后发送简单的帖子数据)

http://php.net/manual/en/function.curl-setopt.php

  

CURLOPT_INFILE上传时应从中读取传输的文件。

     

CURLOPT_INFILESIZE将文件上载到远程站点时文件的预期大小(以字节为单位)。请注意,使用此选项不会阻止libcurl发送更多数据,因为发送的内容取决于CURLOPT_READFUNCTION。