0

こんにちは、Web URLからローカルフォルダー に画像を保存したいです。以下は私のコードです。

<?php
$url = 'http://dev.aviesta.com.mx/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/b/r/bridal-shoes1.jpg';
$saveto = '/var/www/';
  function grab_image($url,$saveto){
      $url = 'http://dev.aviesta.com.mx/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/b/r/bridal-shoes1.jpg';
      $saveto = '/var/www/';
      $ch = curl_init ($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    $raw=curl_exec($ch);
    curl_close ($ch);
    if(file_exists($saveto)){
        unlink($saveto);
    }
    $fp = fopen($saveto,'x');
    fwrite($fp, $raw);
    fclose($fp);
   }

?>

このコードを試してみましたが、うまくいきません。アイデアを提案してください

4

3 に答える 3

1

php.iniファイルで以下のように1つの変更を行いました

allow_url_fopen = On

次の行のコメントを解除します。

extension=php_curl.dll

また

$img = file_get_contents('http://graph.facebook.com/'.$response['user_id'].'/picture?type=large');
$image_name = time().".jpg";
/* putting image into the orignal images folder to keep the original image */
$upload_path = "img".DS."origional_images".DS."";
file_put_contents("img".DS."origional_images".DS.$image_name, $img);

試したコード

あなたが投稿したコメントに従って、以下のコードを試しました。
残念ながら、あなたのコメントには、URLリンクの最後に余分な'があり、その余分な'を取り除き、期待どおりに機能します。

$img = file_get_contents('http://dev.aviesta.com.mx/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/b/r/bridal-shoes1.jpg');
$image_name = time().".jpg";

$upload_path = "img/";
file_put_contents("img/".$image_name, $img);
于 2013-01-07T06:06:22.070 に答える
1

cURL を使用する理由

$url = 'http://dev.aviesta.com.mx/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/b/r/bridal-shoes1.jpg';
$saveto = '/var/www/image_' . time() . '.jpg';

grab_image($url, $saveto);

function grab_image($url, $saveto) {

  // Assumes a correctly encoded URL
  $image = file_get_contents($url);
  if (!$image)
    return false;

  file_put_contents($saveto, $image); 
  if (!file_exists($saveto))
    return false;

  return true;
}

また、Web サーバーに /var/www/ への書き込み権限があることを確認してください。

于 2013-01-07T05:17:46.717 に答える
0

を使用し$fp = fopen($saveto, 'wb');ます。

于 2013-01-07T05:17:58.827 に答える