【问题标题】:Save image from webpage using php使用php保存网页中的图像
【发布时间】:2012-12-31 17:05:09
【问题描述】:

我知道我的问题与this question 非常相似,我正在使用问题的答案作为我的解决方案,但我无法让它发挥作用。

我正在使用Immediatenet.com 生成任何给定 URL 的缩略图(例如:google)。然后使用 cURL 将图像保存在我服务器上的文件夹中。

我不确定问题是否在于 URL 实际上不是图像 URL(即 example.com/image.jpg)或 .html/.php URL,或者我根本不是做对了。我以前从未使用过 cURL,所以很可能我做得不对。

我将图像的路径保存到一个工作正常的 MySQL 数据库中。但是,图像实际上并未保存在指定的文件夹中。文件夹上的权限设置正确,所以我认为这不是权限问题。我还将 allow_url_fopen 设置为 On 以确保。

我的代码如下。谁能指出我正确的方向?

$url = $_POST['url'];
$url_new = 'http://immediatenet.com/t/m?Size=1024x768&URL='.$url;
$img = "/users/images/".$url.".jpg";
$ch = curl_init($url_new);
$fp = fopen($img, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

【问题讨论】:

  • $url 的值是多少?如果它包含/ 字符,$img 将是进入子目录的路径,您需要确保这些子目录存在。检查来自fopen() 的错误。
  • 例如如果$urlhttp://google.com,则需要有一个目录/users/images/http:
  • 哇哦。我真是个白痴。我才意识到你是完全正确的。那些正斜杠把它搞砸了。谢谢你。你应该把这个作为答案,我会接受……不情愿,因为我现在觉得自己像个白痴。并希望能解决这个问题。太感谢了。你帮我省了好几个小时的头痛。

标签: php curl


【解决方案1】:

如果$url 包含正斜杠(就像大多数 URL 一样),这些将被视为$img 路径名中的目录分隔符。您要么需要将斜杠替换为其他字符,要么创建所有必要的目录。

$img = "/users/images/".str_replace('/', '_', $url).".jpg";

【讨论】:

  • 再次感谢,如果有人遇到同样的问题,供以后参考。我也有一个问题,它不会使用“/users/...”保存。我不得不将其更改为“./users/...”。
【解决方案2】:

您确定$img = "/users/images/".$url.".jpg"; 有效吗? .. 你的根目录下真的有 users 文件夹吗?

如果不是,请更正,应该没问题。

【讨论】:

  • 肯定有用户文件夹。我之前已经将图像保存到该图像文件夹中(用于头像上传),但这个似乎不起作用。
  • 根我的意思是文件系统根(你是 unix 类型)而不是你的 webroot。
猜你喜欢
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2012-03-20
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多