Чиним замечательный модуль ImageToElement
Запись от 24.01.2015
Предисловие, ImageToElement пригодится если вам необходимо создать набор элементов исключительно из картинок. И повезло мне сделать сайт для одного человека замечательного как фотографа, но ленивого, как контент-менеджера. Лень было загружать каждую фотографию, как отдельный элемент - фотографий-то много.
Поставил этот замечательный модуль... но не работает, то есть визуально всё выглядит так, будто новые фотографии-элементы загружены, но по факту их нет. Внедрение логов показало следующую ошибку, при добавлении элементов:
Выясняется, что все загружаемые файлы превращаются в какой-то битый набор символов. При чем, загруженный файл становится вдвое больше оригинала. 10 минут в гугле по теме бинарной загрузки файлов привели к следующему решению с сайта студии 15, спасибо им огромное за то что поделились решением.
Итак, нужно отредактировать файл: /bitrix/js/igima.imagetoelement/igima_image_to_element_main.js
Вот так:
Поставил этот замечательный модуль... но не работает, то есть визуально всё выглядит так, будто новые фотографии-элементы загружены, но по факту их нет. Внедрение логов показало следующую ошибку, при добавлении элементов:
Error: Файл не является графическим. Картинка для анонса: Не графический файл.
Выясняется, что все загружаемые файлы превращаются в какой-то битый набор символов. При чем, загруженный файл становится вдвое больше оригинала. 10 минут в гугле по теме бинарной загрузки файлов привели к следующему решению с сайта студии 15, спасибо им огромное за то что поделились решением.
Итак, нужно отредактировать файл: /bitrix/js/igima.imagetoelement/igima_image_to_element_main.js
// http://www.15web.ru/blog/html5-upload
// Пилюля от слабоумия для Chrome, который гад портит файлы в процессе загрузки.
if (!XMLHttpRequest.prototype.sendAsBinary) {
XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
function byteValue(x) {
return x.charCodeAt(0) & 0xff;
}
var ords = Array.prototype.map.call(datastr, byteValue);
var ui8a = new Uint8Array(ords);
this.send(ui8a.buffer);
}
}
Вот так: