Преобразование локального изображения в base64 с использованием JavaScript - PullRequest
2 голосов
/ 05 марта 2012

Я делаю проект в html, только javascript.У меня есть функция, которая преобразует изображение в base64, см. Код ниже.

function getBase64Image()
{
    p = document.getElementById("picField").value;
    img.setAttribute('src', p);
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);
    var dataURL = canvas.toDataURL("image/png");
    var r = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
    base64 = r;
    alert(base64);
}

, но проблема в том, что когда я развернул свой веб-сайт, значит, когда я разместил свой HTML-файл на iis, он не работает, значит, вВ локальной файловой системе он показывает полный формат base 64, такой как iVb ...., но на iis он дает код base64 как просто "base".так почему он не работает на iis, я не знаю, поэтому, пожалуйста, помогите мне и пришлите мне HTML-файл, который будет работать на iis.

1 Ответ

1 голос
/ 05 марта 2012

Я вполне уверен, что у вас Одинаковая политика происхождения проблема.

Когда вы запускаете страницу на IIS, она запускается в другом контексте, нежели локально: вместо file:// URL, он работает на http://.

Что вы пытаетесь сделать, это получить локальный файл изображения и загрузить его на холст на удаленном сайте.Это невозможно при использовании традиционного JavaScript из соображений безопасности.(Я не уверен, как это работает даже локально - в моем понимании это не должно. Но в любом случае.)

Вам нужно будет использовать HTML 5 файловый API , который разрешает JavaScriptпрямой доступ к локальным файлам.Я посмотрю, смогу ли я выкопать некоторые связанные с этим вопросы.

Обновление: это должно помочь:

...