Signature_pad: 将图像保存在服务器文件中

创建于 2016-06-27  ·  11评论  ·  资料来源: szimek/signature_pad

嗨,我正在尝试将签名像 png 图像一样保存在服务器文件中,但我不知道该怎么做(我在我的应用程序中使用 php 和 javascript)。

谢谢!

最有用的评论

@stupendomen

我用前面的代码创建了一个新的 .php 文件(signature_pad.php),并在包含签名板的文件中使用 ajax 函数调用它(当您拉动保存按钮时)。
像这样的东西:

`
var wrapper = document.getElementById("signature-pad"),
clearButton = wrapper.querySelector("[data-action=clear]"),
saveButton = wrapper.querySelector("[data-action=save]"),
canvas = wrapper.querySelector("canvas"),
签名板;

// Adjust canvas coordinate space taking into account pixel ratio,
// to make it look crisp on mobile devices.
// This also causes canvas to be cleared.
    function resizeCanvas() {
        // When zoomed out to less than 100%, for some very strange reason,
        // some browsers report devicePixelRatio as less than 1
         // and only part of the canvas is cleared then.
        var ratio =  Math.max(window.devicePixelRatio || 1, 1);
        canvas.width = canvas.offsetWidth * ratio;
        canvas.height = canvas.offsetHeight * ratio;
        canvas.getContext("2d").scale(ratio, ratio);
    }
    window.onresize = resizeCanvas;
    resizeCanvas();
    signaturePad = new SignaturePad(canvas);

    clearButton.addEventListener("click", function (event) {
         signaturePad.clear();
    });

    saveButton.addEventListener("click", function (event) {
        event.preventDefault();
        var nombre_receptor_form = $("#nombre_receptor_form").val();
        var id_nombre_imagen = $("#id_nombre_imagen").val();

        if ( signaturePad.isEmpty() ) {
            alert("Please insert signature.");
        } else {
            var dataUrl = signaturePad.toDataURL();
            document.getElementById('imagen_firma').src = dataUrl;
            var imagen = dataUrl.replace(/^data:image\/(png|jpg);base64,/, "");
                $.ajax({
                    url: './includes/signature_pad.php',
                    type: 'POST',
                    data: {
                        imageData: imagen
                    },
                })
                .done(function(msg) {
                    // Image saved successfuly.
                    console.log("success: " + msg);
                    document.getElementById("my_form").submit(); //I do this to save other information.
                })
                .fail(function(msg) {
                    console.log("error: " + msg);
                });

`

我希望这对你有用!

所有11条评论

使用此代码解决:

if (isset($_POST['imageData'])) {
    $imgData = base64_decode($_POST['imageData']);
    $image_name= $_POST['image_name'];

    // Path where the image is going to be saved
    $filePath = '../img/'.$image_name.'.jpg';

    // Delete previously uploaded image
    if (file_exists($filePath)) { unlink($filePath); }

    // Write $imgData into the image file
    $file = fopen($filePath, 'w');
    fwrite($file, $imgData);
    fclose($file);
} else {
    echo "imgData doesn't exists";
}

你好,
我有同样的问题,但应该在哪里添加你的代码?

谢谢!

@stupendomen

我用前面的代码创建了一个新的 .php 文件(signature_pad.php),并在包含签名板的文件中使用 ajax 函数调用它(当您拉动保存按钮时)。
像这样的东西:

`
var wrapper = document.getElementById("signature-pad"),
clearButton = wrapper.querySelector("[data-action=clear]"),
saveButton = wrapper.querySelector("[data-action=save]"),
canvas = wrapper.querySelector("canvas"),
签名板;

// Adjust canvas coordinate space taking into account pixel ratio,
// to make it look crisp on mobile devices.
// This also causes canvas to be cleared.
    function resizeCanvas() {
        // When zoomed out to less than 100%, for some very strange reason,
        // some browsers report devicePixelRatio as less than 1
         // and only part of the canvas is cleared then.
        var ratio =  Math.max(window.devicePixelRatio || 1, 1);
        canvas.width = canvas.offsetWidth * ratio;
        canvas.height = canvas.offsetHeight * ratio;
        canvas.getContext("2d").scale(ratio, ratio);
    }
    window.onresize = resizeCanvas;
    resizeCanvas();
    signaturePad = new SignaturePad(canvas);

    clearButton.addEventListener("click", function (event) {
         signaturePad.clear();
    });

    saveButton.addEventListener("click", function (event) {
        event.preventDefault();
        var nombre_receptor_form = $("#nombre_receptor_form").val();
        var id_nombre_imagen = $("#id_nombre_imagen").val();

        if ( signaturePad.isEmpty() ) {
            alert("Please insert signature.");
        } else {
            var dataUrl = signaturePad.toDataURL();
            document.getElementById('imagen_firma').src = dataUrl;
            var imagen = dataUrl.replace(/^data:image\/(png|jpg);base64,/, "");
                $.ajax({
                    url: './includes/signature_pad.php',
                    type: 'POST',
                    data: {
                        imageData: imagen
                    },
                })
                .done(function(msg) {
                    // Image saved successfuly.
                    console.log("success: " + msg);
                    document.getElementById("my_form").submit(); //I do this to save other information.
                })
                .fail(function(msg) {
                    console.log("error: " + msg);
                });

`

我希望这对你有用!

完美的!
谢谢

@davidosuna1987这两行是从哪里来的?
var form_receiver_name = $("#form_receiver_name").val();
var id_image_name = $("#id_image_name").val();

@davidosuna1987 @stupendomen我遇到了麻烦! 你能告诉我如何让这个工作我已经完全复制了上面的代码并添加了 dbconenct.php 文件,但什么也没得到。 请尽快帮助

你可以发布完整的代码吗? 请

谢谢!

谢谢。 很有用 !

谢谢!

@davidosuna1987
好,谢谢贡献。

但我无法让它与新版本的 SignaturePad 或旧版本一起工作。
有人可以举一个在php中使用的例子吗?

非常感谢你

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

derUli picture derUli  ·  3评论

khawye picture khawye  ·  4评论

hostcia picture hostcia  ·  6评论

c2ofh picture c2ofh  ·  7评论

lowe493 picture lowe493  ·  5评论