我正试图将照片发布到Facebook,只要图像与PHP脚本位于同一文件夹中,它就可以正常工作:
$file= "myimage.png";
$args = array(
'message' => 'Photo from application',
);
$args[basename($file)] = '@' . realpath($file);
$ch = curl_init();
我需要更改以使其适用于外部图像,例如:
$file= "http://www.example.com/myimage.png";
答案 0 :(得分:3)
您必须先将图像下载到服务器,然后使用该路径。以下是将图像下载到临时文件的示例:
$temp_name = tempnam(sys_get_temp_dir(), "external");
copy($file, $temp_name);
// ...
$args[basename($file)] = '@' . realpath($temp_name);
答案 1 :(得分:1)
为了确保文件下载没有损坏,我更喜欢这种方式。
$path = '/where/to/save/file';
$url = 'http://path.to/file';
$remote = fopen($url, "rb");
if($remote) {
$local = fopen($path, "wb");
if($local) {
while(!feof($remote)) {
fwrite($local, fread($remote, 1024 * 8 ), 1024 * 8);
}
}
}
if ($remote) fclose($remote);
if ($local) fclose($local);
我建议使用uniqid()
生成路径。
然后将路径传递给您的代码。
由于该文件现在是本地文件,因此应该上传得很好。