LINUX.ORG.RU

django ajax image upload


0

1

Добрый вечер! Работаю над проектом на django. Возникла потребность сделать предварительный просмотр картинок при аплоаде. У пользователя есть возможность на странице динамично добавлять неограниченое количество форм, а так же удалять их. В этих формах есть простые инпуты и инпут аплоада картинки. Нужно реализовать предварительный просмотр картинки. Сущности связаные с этими формами создаются только по окончанию работы при нажатии на кнопку «сейв». Как это лучше сделать? Какимим средствами пользоваться?

загружать картинку на сервер сразу после выбора файла, как в гмейле, например
статей и средств куча

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

Спасибо, trashymichael! Проблема в том, что если пользователь выбрал картинку, посмотрел - не понравилась. То он выбирает в этой же форме другую. Мне нужно удалять старую с сервака и заменять ее новой. Как я уже писал, пользователь может создавать и удалять формы, в которой есть такие картинки. То есть мне нужно еще и удалять картинки при удалении формы. А если он насоздает таких форм, зааплоадит картинки и закроет браузер? Что с этими картинками делать? А может я еще что-то не предусмотрел. Меня интересуют какие-то идеи или примеры как и чем это делается

masterQ
() автор топика
Ответ на: комментарий от stevejobs

Спасибо, stevejobs! Флеш я не рассматриваю. Заказчик категорично против.

masterQ
() автор топика
Ответ на: комментарий от masterQ

>А если он насоздает таких форм, зааплоадит картинки и закроет браузер? Что с этими картинками делать?

Тупой вариант - вешаешь js скрипт, постоянно посылающий некий id юзера, раз в 20 сек. Браузер закрылся - скрипт перестал слать, ждёшь по таймауту и удаляешь все картинки от этого id.

И какую-нибудь фигню по крону можно придумать заодно, для гарантии.

anonymous
()
Ответ на: комментарий от pi11

Cпасибо за советы. Решил сделать так. Создать темповую папку tempPreview, в которую будут заливаться аяксом только картинки для предварительного просмотра. На <input type='file'> на onChange будет поститься кртинка аяксом на сервак в папку tempPreview и сразу же отображаться. При окончании работы с формами пользователь нажимает «Save» и все данные вместе с картинками постятся на сервер. Темповая папка очищается. Так же она будет очищаться по крону на случай, если позователь просто закроет окно. Буду рад услышать критику.

masterQ
() автор топика
Ответ на: комментарий от masterQ

>При окончании работы с формами пользователь нажимает «Save» и все данные вместе с картинками постятся на сервер. Темповая папка очищается.

А если 2 пользователя одновременно будут заливать картинки? Первый отправил запрос - временная папка очистилась с файлами второго пользователя.

Скрипта по крону вполне достаточно. Удалять просто файлы которым больше 12 часов (ну или меньше если проблемы с местом на сервере).

pi11 ★★★★★
()

многие браузеры дают возможность практически моментально отобразить картинку из <input type=«file»> при помощи js: ie6 из-за глюка (input.value), а ff и chrome потому, что так задумано (input.files[0].getAsDataURL()) . достаточно присвоить значение в <img src=«»>, «зажатый» css'ом по размеру тубнейла.

после этого картинка отправляется ajax'ом на сервер (методом post), где специальная view генерит из неё тубнейл и возвращает его в ответе (со статусом 200 и подходящими заголовками Content-type и т.п.). на диск можно ничено не сохранять.

недостаток - картинки, фактически, передаются 2 раза (один раз для создания тумбнейла, второй раз - при сабмите формы). по идее, можно извратиться с кешированием на стороне сервера. но в нашем случае это не требовалось.

Lucky ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.