Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Имитация загрузки файла (https://javascript.ru/forum/events/59236-imitaciya-zagruzki-fajjla.html)

pogranpv 02.11.2015 12:38

Имитация загрузки файла
 
У меня есть плагин кропа изображения. При выборе изображения через кнопку "обзор" плагин подгружает выбранное фото для кропа вот так http://prntscr.com/8y3f7z , а я хочу чтобы по нажатию кнопки сброс, в плагин автоматом подгружалось фото с сервака. Как такое сделать? я так понимаю мне надо симитировать загрузку в поле file через js?

pogranpv 02.11.2015 12:52

у меня стоит вот этот плагин https://github.com/bupy7/yii2-widget-cropbox

pogranpv 02.11.2015 15:25

я нашёл строки кода

selectFromFile = function() {
var fileReader = new FileReader();
fileReader.readAsDataURL(this.files[0]);
$(fileReader).one(EVENT_LOAD, loadImage);
},

как я понимаю мне надо как-то вместо this.files[0] поставить объект своего файла

laimas 02.11.2015 15:27

Цитата:

Сообщение от pogranpv
я хочу чтобы по нажатию кнопки сброс, в плагин автоматом подгружалось фото с сервака.

Зачем? Имитировать загрузку в поле file нельзя, а передать в плагин удаленный сетевой файл можно, и это делать нужно в jq-плагине, по ссылке же, это серверный обработчик.

laimas 02.11.2015 15:39

Цитата:

Сообщение от pogranpv
я нашёл строки кода

Это уже клиентский код. Теперь ищите обработчик события кнопки Сбросить, и он должен обращаться к функции selectFromFile передавая в нее загруженное по сети изображение (var im = new Image(); im.src = "сетевой путь" и т.д.) в общем немного дорабатывать код надо.

pogranpv 02.11.2015 15:51

а не подскажете как получить объект файла по ссылке?

laimas 02.11.2015 16:38

Код не сложный:

var im = new Image();
im.onload = function() {
    //здесь в selectFromFile передать this - это и будет тело изображения,
    //которое уже и должно быть передано readAsDataURL(this);
    //а можно проще, если в плагине используется canvas, то передать сразу в canvas  
}
im.src = "путь сетевого файла"


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

pogranpv 02.11.2015 16:39

Цитата:

Сообщение от laimas (Сообщение 394140)
Это уже клиентский код. Теперь ищите обработчик события кнопки Сбросить, и он должен обращаться к функции selectFromFile передавая в нее загруженное по сети изображение (var im = new Image(); im.src = "сетевой путь" и т.д.) в общем немного дорабатывать код надо.

у меня не получается передать загружаемое по сети изображение(

делаю вот так
var fileReader = new FileReader();
var im = new Image();
im.src = 'http://look.loc/statics/web/blogs/preview/9602/9602.jpg';
fileReader.readAsDataURL(im);
$(fileReader).one(EVENT_LOAD, loadImage);

и ничего

pogranpv 02.11.2015 16:40

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

laimas 02.11.2015 16:41

Цитата:

Сообщение от pogranpv
делаю вот так
var fileReader = new FileReader();
var im = new Image();
im.src = 'http://look.loc/statics/web/blogs/preview/9602/9602.jpg';
fileReader.readAsDataURL(im);
$(fileReader).one(EVENT_LOAD, loadImage);


Так нельзя, смотрите выше. Но и просто вставить в код эти строки тоже нельзя, это ведь надо делать по событию кнопки Сбросить.


Часовой пояс GMT +3, время: 05:09.