2011-08-07 13 views
0

ユーザーは、GAEアプリケーションに未知数のファイルをアップロードします(写真とその説明)。フォームは、私は、ファイルごとに応じて説明を見つける必要があり、アップロードハンドラで今すぐGAEで特定のPOST引数を取得するには?

<input type=hidden name="{{ item.photo_imgsrc_1280 }}" id="file{{ forloop.counter }}"> 
<input type=hidden name="desc{{ forloop.counter }}" value="{{ item.description }}"> 

(名前の値は、実際にファイルの内容とreplaced by Picasaです)

が含まれています。 現在、私は実行します。

files_counter = 0 
for argument in arguments: 
    if 'localhost' in argument: # choose files only, not other fields - Picasa related approach 
     files_counter +=1 
     # self.request.get(argument) here returns the file 
     # self.request.get('desc'+str(files_counter))) can return some other description, not 
     # related to the file above 

は、どのように私はそれを修正できますか?

答えて

2

各隠しフィールドに異なる名前は必要ありません。あなたは同じ名前を何度も持ち、それらをすべて得ることができます。 、そして、

<input type=hidden name="{{ item.photo_imgsrc_1280 }}" id="file{{ forloop.counter }}"> 
<input type=hidden name="photo" value="{{ item.photo_imgsrc_1280 }}"> 
<input type=hidden name="description" value="{{ item.description }}"> 

photodescriptionフィールドのすべての値を取得:それでは、少し自分のフィールドを変更でき

ここ
photo_names = self.request.POST.getall('photo') 
descriptions = self.request.POST.getall('description') 

を、photo_namesが写真とフィールド名のリストです。実際の画像フィールドを取得するにはあなたのような何かをしたい:今

photos = [self.request.POST.get(name) for name in photo_names] 

を、あなたはタプル(photo, description)のリストにグループにそれらをすることができ、そして一つ一つの反復:

data = zip(photos, descriptions) 
for photo, description in data: 
    # do what you need with each single photo/desc... 
+0

モラエス、私のように見えます写真フィールドの名前を変更することはできません。常に{{item.photo_imgsrc_1280}}と同じでなければなりません。そうしないとPicasaは実際のファイルに置き換えません。 –

+0

別の方法で編集しました。関連するフィールドに参加するためのアイデアを回避するには、いくつかの方法があります。あなたが達成しようとしていることを正確にはわかりません。同じ名前のフィールドを使ってフィールドのペアをグループ化する方法を示しています。ありがとう、moreas。 – moraes

+0

私の場合の「写真」は、写真の名前だけでなく、実際の写真ファイルです。私はあなたのアプローチを試しましたが、 'file_size = len(photo)/(1024.0 * 1024.0)'でも動作しません。私は以前に 'len(self.request.get(argument))/(1024.0 * 1024.0)'を使用しました。 –

関連する問題