Форум сайта python.su
Хочу сделать загрузку картинок через ajax, на стороне сервера - мое CGI приложение на python. Собственно говоря вопрос - как =)? Нашел только пару невнятных примеров в сети, может здесь кто-то посоветует, в какую сторону двигаться?
Офлайн
NSkrypnikОбычная загрузка, через скрытый фрейм. Примеров море, есть даже готовые плагины для jQuery(если конечно ты им пользуешься).
Хочу сделать загрузку картинок через ajax, на стороне сервера - мое CGI приложение на python. Собственно говоря вопрос - как =)? Нашел только пару невнятных примеров в сети, может здесь кто-то посоветует, в какую сторону двигаться?
Офлайн
Я такие примеры видел, например вот на 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;
Офлайн
На хабре целая статья есть как это сделать.
Офлайн
А линк есть на статью? Не могу найти.
Офлайн
Я вот эту имел в виду.
http://habrahabr.ru/blogs/django/22838/
Офлайн
Разобрался, все оказывается очень просто с iframes =).
Вообще не знал, что можно iframe использовать для реализации аякса.
Офлайн
Ну вот, опять все не слава богу, файл как-бы подгружает, но не весь. Вот упрощенный код:
Форма:
<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
Офлайн
outf.close()
Офлайн
Да, действительно… Но все равно не работает =)
Вывел sys.stdin при запросе на upload скрипту - файл приходит уже битый, т.е. не доходит часть файла. Что это может быть О_О?
Интересно, что если добавить после <input type=“file” … /> еще какой-нибудь тег input, то данные от него уже не приходят. В общем это уже не проблема питона, но может кто-то здесь сталкивался с подобным?
Отредактировано (Сен. 19, 2009 14:30:55)
Офлайн