Насколько я понимаю, вы просто захотите прочитать поток environ['wsgi.input']
, потому что запрос PUT
отправит все содержимое PUT
в качестве тела запроса.
Мне неизвестны какие-либо проблемы с кодировкой, с которыми вам придется иметь дело (кроме факта, что он является двоичным).
Некоторое время назад я написал простой набор PHP-скриптов, которые можно брать и передавать огромные файлы с другого сервера в локальной сети. Мы начали с POST, но быстро исчерпали память для больших файлов. Таким образом, мы переключились на PUT, где PHP-скрипт мог бы занять хорошее время, зацикливаясь на php://input
4096 байт за раз (или как угодно) ... Он прекрасно работает.
Вот код PHP:
$f1 = fopen('php://input', 'rb');
$f2 = fopen($FilePath, 'wb');
while($data = fread($f1, 4096))
{
fwrite($f2, $data);
}
fclose($f1);
fclose($f2);
Из моего опыта работы с multipart/form-data
в WSGI с POST
я не сомневаюсь, что вы можете обработать PUT
, просто прочитав входной поток.
Код Python должен быть таким:
output = open('/tmp/input', 'wb')
while True:
buf = environ['wsgi.input'].read(4096)
if len(buf) == 0:
break
output.write(buf)