Можно ли скопировать изображения из Интернета на жесткий диск? - PullRequest
0 голосов
/ 20 декабря 2010

Я пытаюсь создать страницу только для личного использования.Я хочу создать систему, с помощью которой я могу загружать изображения на свой локальный жесткий диск напрямую, предоставляя ссылку через localhost , например, WAMP.Причина, по которой я пытаюсь это сделать, заключается в том, что я хочу, чтобы изображения автоматически сортировались на моем жестком диске.Мое поле формы будет примерно таким:

<form method="POST" action="process.php">
   <input type="text" name="URL" id="URL" />
   <input type="text" name="category" id="category" />
   <input type="text" name="subcategory" id="category" />
   <input type="submit">
</form>

Теперь в process.php

//This is just a sample... So please ignore the roughness of the coding

copy($_POST['url'],$_POST['category']."/".$_POST['subcategory']."/somename.jpg");

// If you noticed, the categories and subcategories are actually the name of directory, where I want the picture to go be saved....

Я думаю, что мой подход неверенКак мне добиться чего-то подобного?

Ошибка

Warning: copy(images/image.jpg) [function.copy]: failed to open stream: No such file or directory in

Ответы [ 3 ]

1 голос
/ 07 января 2011

Хорошо, вместо этого я использовал curl, чтобы добиться того, чего я ожидаю. Вот кусок кода

$img = $_POST['url'];
$fullpath = $_POST['category']."/".$_POST['subcategory']."/".basename($img);
$ch = curl_init ($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec($ch);
curl_close ($ch);                   
$fp = fopen($fullpath,'x');
fwrite($fp, $rawdata);
1 голос
/ 20 декабря 2010

Если в php.ini установлено значение allow_url_fopen и ваш PHPVERSION равен> = 4.3.0, ваш код должен работать.

0 голосов
/ 20 декабря 2010

Вы можете сначала скачать документ из php-скрипта с указанного URL, а затем дать ссылку http-client для загрузки локально сохраненного файла. или поместить содержимое документа в выходной поток:

 $cont = file_get_contents($_GET['url']);
  header('Content-Type: application/octet-stream');
  header("Content-Transfer-Encoding: binary ");
  header('Accept-Ranges: bytes');
  header('Content-disposition: attachment; filename=' . $new_file_name));
  echo($cont);
...