Удаленная загрузка НЕСКОЛЬКО изображений - PullRequest
1 голос
/ 29 мая 2011

Хорошо, у меня вопрос, ребята. Я хочу удаленно загрузить (скопировать изображение с сайта на мой сервер) НЕСКОЛЬКО изображений, поместив ссылки в TEXTAREA и нажав «Отправить». Я просто не знаю, как сделать это возможным с несколькими изображениями.

Я могу сделать это с одним изображением, используя функцию копирования (); функция, но не для нескольких записей в TEXTAREA.

Я также хочу ограничить функцию удаленной загрузки до 30 удаленных ссылок, и одно изображение не должно превышать 10 МБ - но я не знаю, как начать. Я слышал, что cURL может это сделать, и я также слышал, что file_get_contents (); с file_put_contents (); может сделать подобное, но я все еще не могу понять, как это сделать сам.

Помогите кому-нибудь? :)

Ответы [ 3 ]

1 голос
/ 29 мая 2011

Вам необходимо проанализировать URL-адреса из textarea.Вы можете использовать эту сторону PHP с регулярным выражением.

Затем вы можете проверить проанализированные URL-адреса и array_slice() первые 30, или ошибку, если их больше 30.

Тогда вам потребуетсяскопировать файлы с удаленного сервера.Вы можете проверить заголовок Content-Length, чтобы убедиться, что размер файла меньше 10 МБ.Вы можете получить только заголовки, используя HEAD вместо GET.

1 голос
/ 29 мая 2011

Я не знаком с PHP, но предлагаю следующее:

Решение проблемы загрузки нескольких файлов:

  • разбиение содержимого в текстовой области кареткойвернуть

  • , затем итерировать их, чтобы получить изображение

сохранить размер каждого файла в переменной, но как получить размер?

  • вы можете выполнить exec (системный) вызов, чтобы узнать размер файла (это требует полной загрузки изображения, но это наиболее удобный способ), или вы можете использовать значение заголовка Content-Length, если содержимоедлина более 10 МГ, затем пропустите его и перейдите к следующему элементу.

Как загрузить изображение?

  • использовать содержимое файла, но не забудьте поставитькодировка как двоичная кодировка для сохранения типа содержимого.
1 голос
/ 29 мая 2011

Вы можете использовать ту же процедуру, что и сейчас, с одним изображением, но делать это в цикле.

$lines = explode("\n", $_POST['textarea']);
if(count($lines) > 30) {
  die('Too many files');
}
foreach($lines as $line) {
  $srcfile = trim($line);
  //copy $srcfile here
  //check size of the file with filesize()
}
...