Найти - Пользователи
Полная версия: wsgi загрузка файлов
Начало » Web » wsgi загрузка файлов
1
keder
Доброго времени суток. Решил организовать загрузку файлов на сервер из вебформы на сайте (javascript) методом POST и прием соответственно осуществляется python скриптом (скрипт запускает wsgi). Обычно при приеме данных из формы все проходит хорошо - через environ получаю всю строку запроса, парсю, записываю в файл. При отправке текстового файла все передается без проблем.
Вот тело POST для текстового файла:
 -----------------------------622549980897071543746160662
Content-Disposition: form-data; name="file"; filename="Poetry"
Content-Type: application/octet-stream

By the old Moulmein Pagoda, lookin' eastward to the sea,
There's a Burma girl a-settin', and I know she thinks o' me;
For the wind is in the palm-trees, and the temple-bells they say:
"Come you back, you British soldier; come you back to Mandalay!"

-----------------------------622549980897071543746160662--

Однако при отправке нетекстового файла запрос постоянно обрывается на 4 байте файла.
Вот запрос при передаче нетекстового файла:
-----------------------------18187035351593489797106346514
Content-Disposition: form-data; name="file"; filename="35d5dd3709883208f4f61bfa8121b00d.jpg"
Content-Type: image/jpeg

ЪьЪЮ

Пробовал использовать cgi.FieldStorage. Но тут какието чудеса. Вывожу fields.getlist(“file”) (fields экземпляр cgi.FieldStorage) получаю список из одной строки:
['\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00...(пропущено)...\x8f?\xff\xd9']
Что уже похоже на передаваемый файл.
Однако если сделать:
file.write(fields.getlist("file")[0])
то запишется только “ЪьЪЮ”
Возникло подозрение что питон обрезает строку до первого символа \x00, но ответа почему так и как с этим бороться я так и не нашел.
slav0nic
enctype="multipart/form-data"
в теге form часом не забыли?

в файл в wb режиме пишете?

вообще http://code.activestate.com/recipes/273844-minimal-http-upload-cgi/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB