Получать многофайловую запись с помощью Google App Engine - PullRequest
3 голосов
/ 01 октября 2009

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

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

self.request.POST['Filename']

дает только первое имя файла.

Что делать, если в записи есть несколько файлов / изображений?

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

EDIT:

self.request.POST.multi.__dict__

показывает

{'_items':
[('Filename', 'camila1.jpg'),
('Filedata[]', FieldStorage('Filedata[]', 'camila1.jpg')),
('Upload', 'Submit Query\r\n--negpwjpcenudkacqrxpleuuubfqqftwm----negpwjpcenudkacqrxpleuuubfqqftwm\r\nContent-Disposition: form-data; name="Filename"\r\n\r\nbornToBeWild1.jpg'),
('Filedata[]', FieldStorage('Filedata[]', 'bornToBeWild1.jpg')),
('Upload', 'Submit Query')]}

Ответы [ 4 ]

3 голосов
/ 01 октября 2009

Ваш флэш-загрузчик предназначен для работы с PHP и отправляет несколько полей Filedata [] (php интерпретирует это как массив для легкого доступа)

Так что вам нужно повторить и получить их все:

def post(self):
  for file_data in self.request.POST.getall('Filedata[]'):
     logging.info(file_data.filename)

данные должны быть file_data.value

1 голос
/ 01 октября 2009

Вызвать self.request.POST.getall ('Filename'), чтобы получить список объектов FieldStorage; каждый содержит один файл. Вы можете получить доступ к данным файла с помощью .value, имени с помощью .name и mimetype с помощью .type.

1 голос
/ 01 октября 2009

Используете ли вы доступные вам библиотеки Django? Если это так, проверить это .

0 голосов
/ 01 октября 2009

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

Используя мои условные обозначения, в вашем примере 2 файла в вашем примере будут "Filename0" и "Filename1". Вы также можете использовать firebug, чтобы увидеть, во что он переименовывает поля входного файла.

Редактировать: я посмотрел, и он использует вспышку. Так что я понятия не имею, как это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...