Bu bellek kullanıyor çünkü bu read()
işlemden gerçekten korkuyorum. Örneğin, kimse 1gb dosya yükleyerek sunucumu DDoS yapabilir, doğru mu?Yüklenen dosyanın boyutlarını toplu halde güvenli bir şekilde nasıl kontrol edilir?
name = request.forms.get('name')
data = request.files.get('data')
if name and data.file:
raw = data.file.read() # This is dangerous for big files
filename = data.filename
return "Hello %s! You uploaded %s (%d bytes)." % (name, filename, len(raw))
Yüklenen dosya boyutunu almak için güvenli bir çözüm var mı? Bir tahmin dosya boyutunu dosya sisteminden almak olacaktır; request.files.get('data')
muhtemelen geçici bir yerde temp dosyasında saklanır?
Apache gibi bir şey altında wsgi ile şişe çalıştırıyorsanız, apache yükleme boyutlarını sınırlayabilir. – jordanm
Şişe mağazaları, bunlardan herhangi birine erişir erişmez, geçici dosyalardaki (veya yeterince küçükse ByteIO arabellekleri) ve yüklenen tüm dosyaları kaydeder. Sunucu, tüm işi yapmadan önce yükleme boyutunu kısıtlamak istiyorsanız, request.content_length için kontrol edin. Her şeyin belleğe uyduğundan emin olmak istiyorsanız, yüklenen dosyaları yanıtında pyfunc tarafından açıklandığı gibi daha küçük parçalarda okuyun/kopyalayın. – defnull