Всем привет! Стоит передо мной такая задача: Нужно осуществить загрузчик изображений с использованием Drag&Drop, предпросмотром и редактированием. Drag&Drop, предпросмотр и редактирование я в принципе реализовал. 1. Проверяем поддерживает ли браузер FileAPI Код (Javascript): function checkFileRider() { if (typeof(window.FileReader) === 'undefined') { return false; } else { return true; } } Соответственно если поддерживает, то выводим блок для загрузки изображений с помощью Drag&Drop, если нет, то input type="file". 2. Создаю миниатюры при помощи Canvas. Мне нужно чтобы миниатюры создавались на клиенте, то есть без загрузки на сервер. Код (Javascript): var dropZone = $('#photowrap .imageuploader'); var loadFiles = []; var image = new Image(); function dropFile() { dropZone[0].ondrop = function(event) { event.preventDefault(); addPreview(event.dataTransfer.files); }; } function addPreview(files) { if(files.length > 0) { dropZone.after('<div class="preview" id="preview"></div<'); for(i=0; i<files.length; i++) { loadFiles.push(files[i]); } generatePreview(); } } function generatePreview() { if (loadFiles.length > 0) { var file = loadFiles.pop(); switch(file.type) { case 'image/gif': case 'image/jpeg': case 'image/png': case 'image/tiff': var typeError = false; break; default: var typeError = true; } if(typeError) { $('#preview').append('<div class="preview_item error">Файл '+file.name+' не является изображением!</div>'); } else { var canvas = document.createElement('CANVAS'); var ctx = canvas.getContext('2d'); image.src = URL.createObjectURL(file); image.onload = function() { ctx.drawImage(image, 0, 0); } $('#preview')..append(canvas); } setTimeout(generatePreview, 200); } } Ну и соответственно редактирование. Все параметры редактирования (поворот, изменение размера, выделение области и т.п.) записываются в скрытый инпут. Короче, это все работает. Осталось последнее: загрузить файлы на сервер. Как я понял, в input file нельзя отредактировать список файлов для загрузки, так как это не разрешается политикой безопасности браузеров. Остаётся только кодировка изображений в base64? Или есть какое-нибудь ещё решение?
а чем это не нравится?? в канвасе то все равно изображение выглядит как data:image/jpeg;base64.. вот берите и отправляйте это все постом.. вот тут можно подсмотреть http://3dcoverdesign.ru/cover3d/create/2