LINUX.ORG.RU

Посоветуйте гем для загрузки изображений

 , ,


0

1

Посмотрел скринкаст по «CarrierWave File Uploads», но это не совсем то, что я хочу.

Мне бы хотелось так: жму кнопку — прямо в текст поста добавляется ссылка вида:

<a href="http://domain.tld/post_name/image_name.jpg">
  <img alt="" src="http://domain.tld/post_name/image_name_preview.jpg">
</a>


Подробнее:

* Заливать изображение в папку public/data/post_name
* Автоматически генерировать превью изображения, но только если оно больше заданного размера и оборачивать ссылкой на полную версию.

Я не уверен, что для этого вообще нужны модели / контроллеры. Мне ведь не нужно связывать эти изображения с моделью постов через бд.

Как я понимаю задача сводится к написанию загрузчика на js, и дополнительно серверной обработки загруженного изображения. Ну и как-то состыковать это.

Подскажите что почитать, что гуглить.

Да, готовый js редактор я подключать не хочу, ибо пишу свой (в том числе для самообучения).



Последнее исправление: CYB3R (всего исправлений: 4)

Ну и напишите сами тем более для самообучения. Такую мелочь проще написать самому чем найти что то готовое, разобраться с ним, и адаптировать под свои нужды.

tyler19
()

Как я понимаю задача сводится к написанию загрузчика на js

зачем? На сервере парсишь сообщение, выдираешь ссылку, скачиваешь итд итп.

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

По замыслу ссылка должна появляться после того, как я нажму кнопку и выберу это самое изображение.

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

Ну и напишите сами

Если бы я мог написать сам сразу — этого топика бы не было, ага. Реализацию связки js -> файл на сервере я пока себе не представляю, поэтому и попросил ссылку на реализацию чего-то подобного.

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

Мм, не знаю как в вики, но вообще алгоритм такой:

1) Перевожу курсор на то место, где хочу видеть код изображения.
2) Щёлкаю по «добавить изображение» и выбираю нужное, жму ок.
3) Изображение заливается на сервер в /post_name/image_name.jpg, при этом если оно больше заданного, то создаётся превью (как я описал в топике).
4) В коде на месте курсора появляется это:

<a href="http://domain.tld/post_name/image_name.jpg">
<img alt=«» src="http://domain.tld/post_name/image_name_preview.jpg">
</a>

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

Эээ, не знаю готовых средств для этого. Хотя алгоритм понятен: отослать на сервер картинку POST-запросом, потом вставить в текст маркер (с именем файла, а лучше уникальный id из ответа сервера) и уже сервер парсером сам заменит маркер на настоящий урл.

А с обработкой картинки проблем нет.

true_admin ★★★★★
()

Выдерни этот функционал из CKEditor, например.

Apple-ch ★★
()
Ответ на: комментарий от true_admin

Через AJAX запрос залить файл нельзя. Однако можно запостить форму в hidden iframe. С jquery всё просто. Если одна из целей обучение необходимо с этим разобраться т.к. любая абстракция может обернуться против вас если вы не знакомы с принципами её работы.

tyler19
()

в этом случае удобно думаю использовать base64 что картинка без загрузки сразу появилась у тебя под курсором - как только выйдет ты получишь превью

<a href="http://domain.tld/post_name/image_name.jpg"> <img alt=«» src=«base64»> </a>

а далее уже ты можешь на бекграунде сохранять эту картинку там где тебе хочется используя сгенерированный base64.

может это поможет для реализации http://blogs.sitepointstatic.com/examples/tech/filedrag/1/index.html

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

Я в общем режил попробовать сделать так:

1. Картинки заливаются локально и из них генерируется лента превьюшек. При клике по превьюшке вставляется нужный код.

2. То есть до сохранения статьи для отображения картинок используются локальные пути или кеш браузера.

3. При сохранении поста картинки заливаются на сервер. При этом фильтр проверяет чтобы все загруженные картинки использовались в теле поста, и те которые не используются — не заливает.

Посмотрю пример, вроде как раз то, что нужно, спасибо.

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

Через AJAX запрос залить файл нельзя.

Я ничего не понимаю в этом, но гугл говорит что через XMLHttpRequest и file api можно.

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

Из File API можно получить base64 encoded string. Это уже будет отправлено не как multipart request. Наверняка не поддерживается старыми браузерами и если файл большой наверняка повесит браузер.

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

что же у тебя за картинки-то что они браузер вешают?

Это уже будет отправлено не как multipart request

и что?

Наверняка не поддерживается старыми браузерами

ну тут уж сам решай.

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