Лучшие практики для загрузки многих (2000+) изображений на сервер - PullRequest
5 голосов
/ 02 июня 2010

У меня есть общий вопрос по этому поводу.

Когда у вас есть галерея, иногда людям нужно загружать тысячи изображений одновременно.Скорее всего, это будет сделано через файл .zip.Каков наилучший способ загрузки такого рода вещей на сервер.Много раз, сервер имеет тайм-ауты и т. Д., Которые необходимо учитывать.Мне интересно, какие вещи мне нужно искать и как лучше всего обрабатывать большое количество загружаемых изображений.

Я предполагаю, что вы позволите пользователю загружать zip-файл (при условии, что тайм-аут не влияет на вас), и этот zip-файл загружается в определенный каталог, давайте предположим, что в этом случае каталогсоздан для каждого пользователя в системе.Затем вы должны разархивировать каталог на сервере и просканировать папку пользователя на наличие любых каталогов, содержащих файлы .jpg или .png или .gif (и т. Д.), А затем соответствующим образом импортировать их в таблицу.Я думаю, помечены по имени папки.

С какими проблемами на стороне сервера я могу столкнуться?

Я знаю, что может быть много проблем.Даже общие идеи могли бы быть, поэтому я могу исследовать дальше.Спасибо!

Кроме того, я бы программировал на Ruby on Rails, но я думаю, что этот вопрос применим ко всем языкам.

Ответы [ 5 ]

2 голосов
/ 02 июня 2010

Нет причин, по которым вы не могли бы справиться с подобными вещами с помощью веб-приложения. Для этого есть пара отличных компонентов:

  1. Загрузить (на основе jquery / flash)
  2. plupload (от moxiecode, люди из tinymce)

Причина, по которой они полезны, заключается в том, что вначале он использует флэш-компонент для обработки загрузок, поэтому вы можете выбирать группы файлов в окне файлового браузера (при условии, что никто не собирается индивидуально выбирать тысячи изображений. .!), и с помощью plupload, перетаскивание также поддерживается вместе с большим количеством платформ.

После того, как ваш интерфейс работает, серверная часть просто должна иметь возможность обрабатывать отдельные загрузки, связывая их с какой-то учетной записью пользователя, и оттуда это должно быть довольно просто.

Что касается проблем на стороне сервера, то это действительно большой вопрос, в зависимости от того, сколько людей будут использовать приложение одновременно, размера изображений, любой обработки, которая происходит после. Помните, что файлы хранятся во временном месте, пока их обрабатывает скрипт, и либо удаляются по завершении, либо копируются вашим скриптом в конечное место хранения, поэтому могут быть проблемы с пространством / памятью / тайм-ауты.

Если изображения имеют большой размер, скажем, raw или tif, то подобные вещи могут по-прежнему работать с частичными загрузками, но реализация какой-либо загрузки через FTP может быть проще. Это немного расплывчатый вопрос, но здесь должно быть достаточно, чтобы вы пошли;)

1 голос
/ 02 июня 2010

Я бы предложил клиентское приложение (возможно, написанное в AIR или Titanium) или сообщив пользователям, что такое FTP.

deviantArt.com, например, предлагает FTP в качестве метода загрузки для оплаты подписчиков, и он работает очень хорошо.

Вместо этого у Flickr есть собственное приложение для этого. «Flickr Uploadr».

1 голос
/ 02 июня 2010

взглянуть на http://gallery.menalto.com
у них есть дюжина методов для загрузки изображений в галереи. Вы можете выбрать те, которые вам подходят.

1 голос
/ 02 июня 2010

Либо есть клиентское приложение, либо код Ajax, который отправляет изображения одно за другим, предотвращая тайм-ауты. В качестве альтернативы, если это не доступно для общественности. FTP все еще работает ...

1 голос
/ 02 июня 2010

Для этих многих изображений это должно быть серьезное приложение. Таким образом, у вас есть возможность предложить программное обеспечение, работающее на клиенте (что-то вроде yahoo mail / picassa), которое позаботится о «управлении» (сеть). перерывы / поддержка возобновления и т. д.) загрузка изображений.

Для серверной части вы можете обрабатывать их по одному (при условии, что ваш клиент отправляет их таким образом) ... таким образом, все будет просто.

...