Автосохранение формы вместе с изображением с помощью jQuery

Может ли кто-нибудь предложить мне плагин jquery, который будет автоматически сохранять данные html-форм в LocalStorage, чтобы восстанавливать их после сбоев браузера, закрытия вкладок или других бедствий?

Я использовал этот, он работает нормально, но не сохранить изображение ?

Любое предложение будет высоко оценено.


person Khirad Banu    schedule 30.03.2017    source источник


Ответы (1)


хорошо, вы можете сохранить этот компонент, но расширить то, что вам нужно, чтобы покрыть загрузку изображения. Я предполагаю, что вы хотите, чтобы это произошло в событии "change" ввода файла, поэтому:

<input type="file" id="myimage" name="myimage" />

EDIT вот лучший пример - затем в JS:

$(document).ready(function() {
    $("#myimage").on('change', function() {
        getImage(this);
    });
});

function getImage(e) {
    var reader = new FileReader();
    reader.onload = function(event) {

    var img = new Image();
    img.onload = function() {
        canvas.width = img.width;
        canvas.height = img.height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0);

        var dataURL = canvas.toDataURL("image/png");
        console.log(dataURL);
        var base64Data = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");

        localStorage.setItem("myImageData", base64Data);

        setImage(); //set the image from the base64 string.
      }
      img.src = event.target.result;
    }
    reader.readAsDataURL(e.files[0]);
}

Затем, чтобы прочитать и установить изображение обратно на страницу:

<img id="myImageElement" src="" />

function setImage() {
    try {
    var imgObj = $("#myimageElement");

    var base64Data = localStorage.getItem("myImageData");
    imgObj.src = "data:image/png;base64," + base64Data;
    }
    catch(e) {}
}
person scgough    schedule 30.03.2017
comment
Спасибо за полезный ответ, я дам вам знать после проверки - person Khirad Banu; 30.03.2017
comment
Я получаю данные об ошибке: image/png;base64,null, используя этот фрагмент - person Khirad Banu; 30.03.2017
comment
это плохо, я все еще получаю эти данные об ошибке: image/png; base64, null, похоже, что изображение не хранится в локальном хранилище - person Khirad Banu; 30.03.2017
comment
странный. это сработало для меня. возможно, конкретное ограничение браузера? - person scgough; 30.03.2017
comment
Да, может быть, но теперь я вижу строку base64 при изменении функции. Вот как я вызываю эти функции. $(document).ready(function() { setImage(); $(#myimage).on('change', function() { getImage(this); }); Возможно, я неправильно вызываю функцию setimage() . - person Khirad Banu; 30.03.2017
comment
set image следует вызывать после. поставьте вызов сразу после localStorage.setItem("myImageData", base64Data); - person scgough; 30.03.2017