$imageURL = 'http://www.cnsnews.com/sites/default/files/images/OBAMA-AP%20PHOTO_8.jpg';
$imageInfo = pathinfo($imageURL);
$imageName = clean(basename($imageURL,'.'.$imageInfo['extension']));
$fileName = $imageName.'.'.$imageInfo['extension'];// file name
$content = file_get_contents($imageURL);
file_put_contents(UPLOAD_DIR.$fileName, $content);
$product_file = UPLOAD_DIR.$fileName;
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
return preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one.
}
..虽然几乎所有我尝试过的网址除了这个之外都可以正常工作,可能是因为OBAMA-AP%20PHOTO_8.jpg
中的特殊字符?即使我正在打扫它?
图片无法下载。
答案 0 :(得分:0)
(编辑我以前的答案,这不是很有帮助)
对问题进行分类 - file_get_contents($imageURL)
是否返回数据?
打印要测试的返回字符串的长度echo strlen($contents);
你能创建一个文件名中包含'%'的文件吗?
我可以将imageURL下载为打字,所以你很可能是正确的,它是 保存到文件名中的%将成为问题。
答案 1 :(得分:0)
在清理图像名称之前,您应该对其进行urldecode:
function clean($string) {
$string = urldecode($string);
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
return preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one.
}