Как сохранить загружаемые файлы на другой сервер - PullRequest
2 голосов
/ 20 марта 2011

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

Ответы [ 2 ]

3 голосов
/ 20 марта 2011

Поведение Django по умолчанию - сохранение файла в файловой системе, а не в самой базе данных.

У вас есть несколько способов сделать это, самый простой - экспортировать файловую систему с вашего "другого" компьютера и монтировать ее на компьютере с помощью приложения django.

Для экспорта файловой системы вы можете использовать NFS, MogileFS или GlusterFS (который я использую) или многие другие :). Если вам не нужно сохранять и обслуживать в режиме реального времени, простой rsync также может быть вариантом.

Второй вариант - использовать существующие механизмы django StogareAPI . уже доступно различных резервных копий хранилища, которые вы можете использовать и могут быть вам полезны (например, ftp).

0 голосов
/ 20 марта 2011

Это не будет работать из коробки, вам нужно иметь механизм (написать некоторый код), чтобы ставить в очередь файлы, загруженные через приложение django, а затем использовать промежуточное ПО (может быть в python) для передачи файлов из очереди в вашуфайловый сервер.поэтому процесс в основном такой:

  1. Примите загруженный файл через приложение django.
  2. приложение django.записывает информацию о файле (его временный путь и имя) в очередь
  3. Приложение промежуточного программного обеспечения считывает следующий файл в очереди.
  4. Приложение промежуточного программного обеспечения использует некоторый протокол передачи (sftp, scp, ftp,http и т. д.), чтобы скопировать файл на файловый сервер.
  5. Приложение промежуточного программного обеспечения удаляет файл, из которого размещено приложение django, поэтому на сервере django нет копии файла.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...