Как обработать загруженные файлы в правильном порядке? - PullRequest
1 голос
/ 09 августа 2011

Допустим, у меня есть следующая форма с 2 файлами:

<!-- the field below contains actual upload file -->
<input type=hidden name="http://localhost:XXXX/some_unique_name_generated_by_Picasa_and_not_controlled_by_me"> 
<!-- the name of field below is equal to the uploaded above filename -->
<input type=hidden name="DSC04310.jpg" value="description of first file">

<input type=hidden name="http://localhost:XXXX/some_unique_name_generated_by_Picasa_and_not_controlled_by_me"> 
<input type=hidden name="DSC04306.jpg" value="description of second file">

Каким-то образом, когда они загружаются, я получаю их на сервере в другой последовательности - сначала DSC04306.jpg , а затем DSC04310.jpg . Я использую:

arguments = self.request.arguments()
files_arguments = []               
for argument in arguments:
    if 'localhost' in argument: # choose files only, not other fields
        files_arguments.append(argument) 

Но мне нужно обработать их в той же последовательности, в которой они были в форме. Я думаю о следующем решении:

<input type=hidden name="http://localhost:XXXX/some_unique_name"> 
<input type=hidden name="DSC04310.jpg" value="description of first file">
<input type=hidden name="seq_DSC04310.jpg" value="1">

<input type=hidden name="http://localhost:XXXX/some_unique_name"> 
<input type=hidden name="DSC04306.jpg" value="description of second file">
<input type=hidden name="seq_DSC04306.jpg" value="2">

Это хороший подход? Если так, то как я могу отсортировать значения в files_arguments на основе значений в seq_FILENAME полях?

1 Ответ

1 голос
/ 09 августа 2011

Не используйте request.arguments(), если только вам не нужны все ключи из запроса, включая ключи из строки запроса (и не только POST). Также не заказано .

Вместо этого итерируйте по request.POST значениям, потому что они упорядочены. Вы можете использовать request.POST.iteritems() или request.POST.itervalues():

for key, value in self.request.POST.iteritems():
    # ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...