2014-09-03 40 views
5

Bir python GAE arka planına çok parçalı/form veri içeren bir http 'POST' yapmaya çalışıyorum. Sunucu tarafı yöntemim tam gövdeyi alıyor, ancak el ile üzerine gelmeden ve metni değerler için ayırmadan gövde içeriğinin nasıl ayrıştırılacağı konusunda hiçbir fikrim yok.Python - Sunucu tarafında çok parçalı/form-veri isteği ayrıştırma

Benim isteği şöyle görünür:

POST /android/v4/MyPostMethod HTTP/1.1 
Accept: */* 
Accept-Charset: * 
Content-Length: 186808 
Content-Type: multipart/form-data; boundary=*****; charset="utf-8" 
Content_Length: 186808 
Content_Type: multipart/form-data; boundary=***** 
Host: myhost.appspot.com 
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.2; GT-I9300 Build/XXXXX) 
Via: HTTP/1.1 MSP-YV 

--***** 
Content-Disposition: form-data; name="value1" 
Content-Type: text/plain; charset=UTF-8 

f0ef73c5-54dd-40cf-9ee7-5c4cb764eb28 
--***** 
Content-Disposition: form-data; name="value2" 
Content-Type: text/plain; charset=UTF-8 

10d71e73-4d4d-4607-b271-f7efcfd0c59d 
--***** 
Content-Disposition: form-data; name="value3" 
Content-Type: text/plain; charset=UTF-8 

10d71e73-4d4d-4607-b271-f7efdfdfdfdf 
--***** 
Content-Disposition: form-data; name="logText"; filename="log.txt" 
Content-Type: text/plain 
Content-Transfer-Encoding: binary 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
... 
--*****-- 

Etrafa arayıp durdum ve önemsiz olanı yapmak için nasıl iyi bir açıklama bulamadık. Birinin bana burada yardım edip edemeyeceğini takdir ediyorum. Teşekkürler.

cevap

4

() benim için çalışıyor değildi, fakat sadece kaldırılmış yöntemi:

pdict = {'boundary':'*****'} 
cgi.parse_multipart(self.request.body_file, pdict) 

Dont know why ama sürece onun Onunla iyi çalışıyorum.

+0

Bu, büyük dosyalar için ideal değildir. Dokümantasyondan "Yüklenecek megabaytlar bekleniyorsa bu kullanımı kolay ama çok iyi değil - bu durumda, daha esnek olan FieldStorage sınıfını kullanın." – mbarkhau

0

.cgi python kitaplığını istiyorsunuz. böyle

Özellikle bir şey

: nedense cgi.FieldStorage için

import cgi 
form = cgi.FieldStorage() 
value1 = form.getfirst("value1", "") 
value2 = form.getfirst("value2", "") 
value3 = form.getfirst("value3", "") 
logtext = form.getfirst("logText", "") 
İlgili konular