Найти - Пользователи
Полная версия: python+ajax+upload file
Начало » Web » python+ajax+upload file
1 2
NSkrypnik
Хочу сделать загрузку картинок через ajax, на стороне сервера - мое CGI приложение на python. Собственно говоря вопрос - как =)? Нашел только пару невнятных примеров в сети, может здесь кто-то посоветует, в какую сторону двигаться?
ZioN
NSkrypnik
Хочу сделать загрузку картинок через ajax, на стороне сервера - мое CGI приложение на python. Собственно говоря вопрос - как =)? Нашел только пару невнятных примеров в сети, может здесь кто-то посоветует, в какую сторону двигаться?
Обычная загрузка, через скрытый фрейм. Примеров море, есть даже готовые плагины для jQuery(если конечно ты им пользуешься).
NSkrypnik
Я такие примеры видел, например вот на js:

<form id="file_upload_form" method="post" enctype="multipart/form-data" action="upload.php">
<input name="file" id="file" size="27" type="file" /><br />
<input type="submit" name="action" value="Upload" /><br />
<iframe id="upload_target" name="upload_target" src="" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>

function init() {
document.getElementById('file_upload_form').onsubmit=function() {
document.getElementById('file_upload_form').target = 'upload_target'; //'upload_target' is the name of the iframe
}
}
window.onload=init;
Но что дальше, как данные попадут на сервер и как их обрабатывать? Покурю пока эти самые iframe, может сам до чего умного додумаюсь.
Ferroman
На хабре целая статья есть как это сделать.
NSkrypnik
А линк есть на статью? Не могу найти.
Ferroman
Я вот эту имел в виду.
http://habrahabr.ru/blogs/django/22838/
NSkrypnik
Разобрался, все оказывается очень просто с iframes =).
Вообще не знал, что можно iframe использовать для реализации аякса.
NSkrypnik
Ну вот, опять все не слава богу, файл как-бы подгружает, но не весь. Вот упрощенный код:
Форма:
	<form action="${SITE_URI}/uploader.py" 
enctype="multipart/form-data"
method="POST"
id="uploadImgForm"
onsubmit="uploadImg(this, 'upload_thumb')">
<div style="margin: 10px;"><input type="submit" value="Загрузить изображение" /></div>
<input type="hidden" name="upThumbImg" value="1" />
<input type="file" name="datafile" size="40" />
</form>
Обработчик:
if form.has_key('upThumbImg'):
item = form['datafile']
if item.file:
content = item.file.read()
outf = open(OS_DIR_SITE_PATH + "images/" + item.filename, 'wb')
outf.write(content)
outf.close
Что-то в файл сохраняется, но где-то только четверть от истинного размера.
ZioN
outf.close()
NSkrypnik
Да, действительно… Но все равно не работает =)

Вывел sys.stdin при запросе на upload скрипту - файл приходит уже битый, т.е. не доходит часть файла. Что это может быть О_О?
Интересно, что если добавить после <input type=“file” … /> еще какой-нибудь тег input, то данные от него уже не приходят. В общем это уже не проблема питона, но может кто-то здесь сталкивался с подобным?
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