2011-08-09 15 views
1

のは、私は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"> 

ですか?もしそうなら、どうすればseq_FILENAMEフィールドの値に基づいてfiles_argumentsの値をソートできますか?

答えて

1

質問文字列(POSTだけでなく)からのキーを含むすべてのキーを要求しない限り、request.arguments()は使用しないでください。また、は注文していません。

代わりに、request.POSTの値を順番に処理します。私のすべてのGAE関連の質問に答えるために、

for key, value in self.request.POST.iteritems(): 
    # ... 
+0

おかげで、モラエス;):あなたはrequest.POST.iteritems()またはrequest.POST.itervalues()を使用することができます。 'iteritems'を使うと、アップロードしたのと同じ順番で取得できますか? –

+0

HTTP仕様のものではありませんが、実際にはyesです。 – moraes

+0

私は注文がブラウザで保存されていることが保証されているとは思いませんか?私はフィールドがどのような順序で処理されるかは問題ではないかと思っています。 –

関連する問題