загрузить файл по ссылке?

sunyang

Мастер
Регистрация
25 Апр 2009
Сообщения
440
Реакции
30
мне нужно выцепить картинку по ссылке
/welcome/images/uploads/221060913-4.jpg
и загрузить ее к себе на сервак в папку:
\image\data

как можно реализовать?
 
PHP:
copy('http://site.com/welcome/images/uploads/221060913-4.jpg', 'image/data/221060913-4.jpg');
 
вариантов море и для этого и придумали Гугль :)
PHP:
$home_url_img="/image/data/".basename($url_img);
$image=file_get_contents($url_img);
$fp=fopen($home_url_img,"w+");
fwrite($fp,$image);
fclose($fp);
 
вариантов море и для этого и придумали Гугль :)
PHP:
$home_url_img="/image/data/".basename($url_img);
$image=file_get_contents($url_img);
$fp=fopen($home_url_img,"w+");
fwrite($fp,$image);
fclose($fp);
Все красиво, только я бы последние 3 строчки заменил на file_put_contents(); ;)
 
а как переименовать загружаемый файл?

Добавлено через 10 минут
вот скриптина для загрузки файла:

PHP:
<?

if ($_POST[ok]) {

// Определяем директорию на сервере.
$upfiledir = $_SERVER[DOCUMENT_ROOT]."/foto/";
// Полное имя загружаемого файла
$upfile = $upfiledir . basename($_FILES[load_imd][name]);
// если файл перемещен в нужную директорию выводим информацию
if (move_uploaded_file($_FILES[load_imd][tmp_name], $upfile ) ) 
 {

 // Данная переменная хранит относительную ссылку, которую можно поместить в БД
 $uplink = "foto/".$_FILES[load_imd][name]; 
 // Инфа о файле
echo "Файл ".$_FILES[load_imd][name]." успешно загружен на сервер! <br />
 Размер: ".$_FILES[load_imd][size]." байт. <br />
 Мим-тип: ".$_FILES[load_imd][type];
 } 
} 
?>

<form action='<?=$_SERVER[PHP_SELF]?>' method='POST' enctype='multipart/form-data' >
<br />Фото: <input type='file' name='load_imd'> <br />
<input type='submit' name='ok' value='Добавить' />
</form>

Как дописать переименование файла?
 
как вариант(если расширение файла неизвестно) можно так
PHP:
<?php
$name = explode('.',$_FILES[load_imd][name]);//отделяем расширение если неизвестно какое оно
$new_name ='novoeimia';//новое имя
$rasshirenie = $name[1];//расширение
copy("foto/".$_FILES[load_imd][name], "foto/".$new_name.$rasshirenie);//копируем с новым именем
unlink("foto/".$_FILES[load_imd][name]);//удаляем старый файл
 
с переименованием разобрался. А как изменить размер изображения?
 
с переименованием разобрался. А как изменить размер изображения?
PHP:
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
{//echo $src;
  if (!file_exists($src)) return false;

  $size = getimagesize($src);
//print_r ($size);
  if ($size === false) return false;

  // Определяем исходный формат по MIME-информации, предоставленной
  // функцией getimagesize, и выбираем соответствующую формату
  // imagecreatefrom-функцию.
  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  $icfunc = "imagecreatefrom" . $format;
  if (!function_exists($icfunc)) return false;

  $x_ratio = $width / $size[0];
  $y_ratio = $height / $size[1];

  $ratio       = min($x_ratio, $y_ratio);
  $use_x_ratio = ($x_ratio == $ratio);

  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

  $isrc = $icfunc($src);
  $idest = imagecreatetruecolor($width, $height);

  imagefill($idest, 0, 0, $rgb);
  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 
    $new_width, $new_height, $size[0], $size[1]);

  imagejpeg($idest, $dest, $quality);

  imagedestroy($isrc);
  imagedestroy($idest);

  return true;

}

//$src - исходный файл
$size = getimagesize($src);
$width = $size[0];//ширина исходного файла
$height = $size[1];//высота исходного файла
$width_news_images = 200; //новая ширина
$new_height = round($width_news_images *  $height/$width);
//echo $new_height;
img_resize($src,$dest,$width_news_images,$new_height,80);
//по адресу $dest будет файл изображения с новыми размерами
можно так :)
 
PHP:
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
{//echo $src;
  if (!file_exists($src)) return false;
  $size = getimagesize($src);
//print_r ($size);
  if ($size === false) return false;
  // Определяем исходный формат по MIME-информации, предоставленной
  // функцией getimagesize, и выбираем соответствующую формату
  // imagecreatefrom-функцию.
  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  $icfunc = "imagecreatefrom" . $format;
  if (!function_exists($icfunc)) return false;
  $x_ratio = $width / $size[0];
  $y_ratio = $height / $size[1];
  $ratio       = min($x_ratio, $y_ratio);
  $use_x_ratio = ($x_ratio == $ratio);
  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
  $isrc = $icfunc($src);
  $idest = imagecreatetruecolor($width, $height);
  imagefill($idest, 0, 0, $rgb);
  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 
    $new_width, $new_height, $size[0], $size[1]);
  imagejpeg($idest, $dest, $quality);
  imagedestroy($isrc);
  imagedestroy($idest);
  return true;
}
//$src - исходный файл
$size = getimagesize($src);
$width = $size[0];//ширина исходного файла
$height = $size[1];//высота исходного файла
$width_news_images = 200; //новая ширина
$new_height = round($width_news_images *  $height/$width);
//echo $new_height;
img_resize($src,$dest,$width_news_images,$new_height,80);
//по адресу $dest будет файл изображения с новыми размерами
можно так :)

а в $src передать $_FILES[load_imd][tmp_name] ?
 
Назад
Сверху