Нова дилема, теглене на картинка на сървъра

meleto

Registered
Нова дилема: направих скрипт, който чрез форма добавя адрес на картинка в БД-то. Как обаче става изтеглянето й на сървъра в някоя папка ?
 
PHP:
<?php
$kartinka = "http://example.com/images/image.png";
copy($kartinka,"home/images/image.png");
?>

Като само си нагласяш директорията в която да копира (и под какво име) и какъв да е лника на картинката.

Ето примерно можеш да вземеш image.png от линка чрез този код:

PHP:
<?php
$kartinka = "http://example.com/images/image.png";
$name = end(explode("/",$kartinka));
?>

Като $name ще ти върне image.png

;)
 
1. Това не е дилема :D
2.

PHP:
<?php
// Дефиниране на възможните разширения
define('ALLOWED_FILENAMES', 'jpg|jpeg|gif|png'); 
//Пътя до папката, в която искаш да вкараш изображението
define('IMAGE_DIR', '/path/to/image/dir'); 


if(!preg_match('#^http://.*/([^/]+\.('.ALLOWED_FILENAMES.'))$#', $_GET['img_url'], $m)) { 
  die('Invalid url given'); 
} 
 
if(!$img = file_get_contents($_GET['img_url'])) { 
  die('Getting that file failed'); 
} 

if(!file_put_contents(IMAGE_DIR.'/'.$m[1], $img)) { 
  die('Writing the file failed'); 
}  
?>

Така се подава чрез $_GET, но ако ще ползваш форма го смени с $_POST.
 
relax4o каза:
1. Това не е дилема :D
2.

PHP:
<?php
// Дефиниране на възможните разширения
define('ALLOWED_FILENAMES', 'jpg|jpeg|gif|png'); 
//Пътя до папката, в която искаш да вкараш изображението
define('IMAGE_DIR', '/path/to/image/dir'); 


if(!preg_match('#^http://.*/([^/]+\.('.ALLOWED_FILENAMES.'))$#', $_GET['img_url'], $m)) { 
  die('Invalid url given'); 
} 
 
if(!$img = file_get_contents($_GET['img_url'])) { 
  die('Getting that file failed'); 
} 

if(!file_put_contents(IMAGE_DIR.'/'.$m[1], $img)) { 
  die('Writing the file failed'); 
}  
?>

Така се подава чрез $_GET, но ако ще ползваш форма го смени с $_POST.



Warning: file_put_contents(localhost/site/images/hqdefault.jpg) [function.file-put-contents]: failed to open stream: No such file or directory in C:\xampp\htdocs\site\admin\add.php on line 105
Writing the file failed


Не мога да разбера защо прави проблем. Явно намира картинката, но при запис прави проблем. Може би просто не съм схванал идеята на кода, не съм твърде убеден?


Код:
   // Дефиниране на възможните разширения
define('ALLOWED_FILENAMES', 'jpg|jpeg|gif|png');
//Пътя до папката, в която искаш да вкараш изображението
define('IMAGE_DIR', 'localhost/site/images');


if(!preg_match('#^http://.*/([^/]+\.('.ALLOWED_FILENAMES.'))$#', $_POST['image'], $m)) {
  die('Invalid url given');
}

if(!$img = file_get_contents($_POST['image'])) {
  die('Getting that file failed');
}

if(!file_put_contents(IMAGE_DIR.'/'.$m[1], $img)) {
  die('Writing the file failed');
}
 
define('IMAGE_DIR', 'localhost/site/images');

Това ти е проблема.

Ако файла с този код ти се намира в site папката, просто на мястото на localhost/site/images напиши /images или просто напиши целия път.

Можеш да ползваш dirname(__FILE__); като root.


П.П. пътя не трябва да е URL адрес, а от типа D:\blq\dlq\dra.
 

Back
Горе