SO ile ilgili birçok sorularımı okudum, ancak çalışan bir çözüm bulmayı başaramadım. istemci Sonrapython istekleri, unicode dosya adlarıyla gönder
app = Flask(__name__)
api = Api(app)
class SendMailAPI(Resource):
def post(self):
print request.files
return Response(status=200)
api.add_resource(SendMailAPI, '/')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
:
Bu basitleştirilmiş koduyla bir Matara sunucusu var
# coding:utf-8
import requests
eng_file_name = 'a.txt'
heb_file_name = u'א.txt'
requests.post('http://localhost:5000/', files={'file0': open(eng_file_name, 'rb')})
requests.post('http://localhost:5000/', files={'file0': open(heb_file_name, 'rb')})
olmayan utf-8 dosya adıyla ilk isteği göndererek sunucusunun aldığı dosya ile istek ve ImmutableMultiDict([('file0', <FileStorage: u'a.txt' (None)>)])
yazdırır, ancak dosyayı utf-8 dosya adı ile gönderirken sunucu ImmutableMultiDict([])
yazdırılırken dosyayı almıyor gibi görünüyor.
Ben istekleri 2.3.0
kullanıyorum ama sorun yanı (2.8.1
) son sürümü ile çözmezse, Flask versiyonu 0.10.1
ve Matara-RESTful sürüm 0.3.4
olduğunu.
requests
kodunda bazı kazı yaptım ve istek gönderilmeyecek gibi görünüyor (yani dosyayla birlikte) ve istek gönderilmeden hemen önce yazdırıldım ve dosya adının gerçekten RFC2231 olarak kodlandığını görüyorum: sorun düzgün isteğine dosya eklemek değil veya Flask
eğer dosya adlarına sahip dosyaları toplayıp ile sorunları olması o requests
içinde yatıyor eğer
--6ea257530b254861b71626f10a801726
Content-Disposition: form-data; name="file0"; filename*=utf-8''%D7%90.txt
Ben tamamen emin değilim şeyler Özetle RFC2231'e göre kodlanmıştır.
GÜNCELLEME:requests
GitHub'dan bu konuda genelinde geldi: https://github.com/kennethreitz/requests/issues/2505
İstek tamam olduğundan, bu sunucu olmalıdır. Soru, benim için bir değirmencilik hata ayıklama görevi gibi görünüyor. Burada yanlış yapan belirli bir kod satırını kesin olarak belirlemek için burada ve bazı yazdırma noktaları ekleyin. –
böylece istekler dosya isimlerini desteklemeyecek şekilde kodlar mı? – mehdy