Идея такова: у вас есть поле файла, которое скрыто, и изображение. Вы используете изображение, чтобы показать диалог выбора файла. Затем я показываю изображение на холсте.
<input id="ytfile-select" type="hidden" value="" name="Foto[image]" />
<input style="display:none" id="file-select" accept="image/*"
name="Foto[image]" type="file" />
<img id="upload-image" src="/images/design/upload-image.png"
alt="upload-image-button" />
<canvas id="canvas">
Sorry, your browser doesn't support the <canvas> element.
</canvas>
$('#upload-image').click(function(){
$('#file-select').click();
});
$('#file-select').bind('change',function(){
var fileList = this.files;
var img = document.createElement("img");
img.classList.add("obj");
img.src = window.URL.createObjectURL(fileList[0]);
var ctx = document.getElementById('canvas').getContext("2d");
ctx.drawImage(img,0,0);
});
В Firefox 10 ctx.drawImage(img,0,0);
работает только тогда, когда У меня есть точка прерывания отладчика Firebug и эта строка. Без точки останова это не работает. Я проверил это на другом чистом профиле.
В Chrome $('#file-select').click();
не открывает диалоговое окно файла.
Редактировать : на этот вопрос уже дан ответ. Однако я понятия не имею, в чем проблема с Firefox. Есть идеи?
Я использовал эти сайты для создания этого кода:
Редактировать 2 :
Я решил проблему с Firefox, выполнив это:
За чертой var fileList = this.files;
я поставил:
reader = new FileReader();
reader.onload = function (event) {
$('#display').append('<img src ="' + event.target.result + '">');
};
reader.readAsDataURL(fileList[0]);