Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 18, 2009 21:24:58

NSkrypnik
От:
Зарегистрирован: 2009-08-17
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

Хочу сделать загрузку картинок через ajax, на стороне сервера - мое CGI приложение на python. Собственно говоря вопрос - как =)? Нашел только пару невнятных примеров в сети, может здесь кто-то посоветует, в какую сторону двигаться?



Офлайн

#2 Сен. 18, 2009 21:28:18

ZioN
От:
Зарегистрирован: 2007-07-12
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

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



Офлайн

#3 Сен. 18, 2009 21:44:16

NSkrypnik
От:
Зарегистрирован: 2009-08-17
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

Я такие примеры видел, например вот на 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, может сам до чего умного додумаюсь.



Офлайн

#4 Сен. 18, 2009 21:48:48

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

python+ajax+upload file

На хабре целая статья есть как это сделать.

Офлайн

#5 Сен. 18, 2009 21:57:54

NSkrypnik
От:
Зарегистрирован: 2009-08-17
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

А линк есть на статью? Не могу найти.



Офлайн

#6 Сен. 18, 2009 22:20:40

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

python+ajax+upload file

Я вот эту имел в виду.
http://habrahabr.ru/blogs/django/22838/

Офлайн

#7 Сен. 18, 2009 22:55:52

NSkrypnik
От:
Зарегистрирован: 2009-08-17
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

Разобрался, все оказывается очень просто с iframes =).
Вообще не знал, что можно iframe использовать для реализации аякса.



Офлайн

#8 Сен. 19, 2009 13:09:04

NSkrypnik
От:
Зарегистрирован: 2009-08-17
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

Ну вот, опять все не слава богу, файл как-бы подгружает, но не весь. Вот упрощенный код:
Форма:

	<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
Что-то в файл сохраняется, но где-то только четверть от истинного размера.



Офлайн

#9 Сен. 19, 2009 13:40:24

ZioN
От:
Зарегистрирован: 2007-07-12
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

outf.close()



Офлайн

#10 Сен. 19, 2009 13:44:53

NSkrypnik
От:
Зарегистрирован: 2009-08-17
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

python+ajax+upload file

Да, действительно… Но все равно не работает =)

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



Отредактировано (Сен. 19, 2009 14:30:55)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version