Обработка загрузки файлов в Drupal - PullRequest
0 голосов
/ 04 марта 2010

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

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

До сих пор я использовал комбинацию модулей filefield, filefield_sources, imce и ckeditor. Я думаю, что ckeditor не очень важен для решения, но мне нужно как-то встраивать изображения из архива, и это делается с помощью IMCE. Поскольку я не хочу, чтобы все было доступно из браузера файлов, я создал подкаталог и установил полный доступ к нему в настройках IMCE, давайте назовем его default/files/site

Это работало нормально, если все операции с файлами выполнялись через IMCE, но когда я загружал файлы непосредственно из файлового поля, мои файлы попадали в корневой каталог default / files, поэтому я настраивал папки для своих полей, например default/files/site/movies в поле, в котором разрешен формат .flv. Это работало нормально, пока я не пытался получить доступ к файлам через IMCE. Похоже, что папки, созданные в filefield, недоступны из IMCE?

Я также нахожусь в состоянии, когда мне нужно поддерживать большие загрузки (200 МБ +), но из моего опыта в других проектах разрешение загрузки файлов через FTP обычно спасает жизнь, но насколько я понимаю, IMCE не будет файлы поддержки не загружаются через Drupal каким-либо образом, так как они отсутствуют в базе данных (с сообщением: The selected file could not be used because the file does not exist in the database.)

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

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

Также проверьте эту ветку (http://drupal.org/node/438940) и ссылку на работу Джона Локка по адресу: http://www.freelock.com/blog/john-locke/2010-02/using-file-field-imported-files-drupal-drush-rescue

0 голосов
/ 07 марта 2010

Ну, я лично не знаком с IMCE, но если вам нужны файлы, которые были загружены через ftp, для добавления в таблицы файлов, то мой импульс - написать небольшой модуль.что позволит пользователю затем нажать кнопку и запустить пакетный процесс.(Это я предполагаю, что вы используете Drupal 6, так как пакетный API не существует в 5.)

После этого указанный пакетный процесс будет перебирать все файлы в соответствующем каталоге, что я бы предположилВы загрузили файлы в, используйте file_copy() (из файлового API Drupal), чтобы скопировать файлы в default / files / site, а затем добавили указанные файлы в таблицу файлов, что на самом деле довольно просто с drupal_write_record().

Может даже не понадобиться использовать пакетный API - это имеет значение, если вы просто загружаете 10-30 действительно больших файлов или 200-300 МБ файлов.

Для использования пакетного API, я бы посмотрел на http://drupal.org/node/180528 - это довольно простой пример того, как работает пакетный API, который в основном состоит из сообщения API, который вы хотите продолжать вызыватьfunction_a, а затем внутри function_a устанавливают ваш прогресс в массиве контекста до тех пор, пока вы не закончите, после чего пакетный процесс завершится.Тогда у вас есть тот, кто загружает файлы через ftp, чтобы нажать кнопку на веб-сайте, чтобы переместить и зарегистрировать файлы.

...