使用ajax和表单数据发送base64映像

时间:2017-06-21 09:06:48

标签: php jquery ajax image base64

我的客户想要捕获表单数据和签名(使用signaturePad),我已经创建了一个带有ajax的解决方案但是我不能让这两个东西一起工作。

如果我发送图像数据:

var image = signaturePad.toDataURL();
$.ajax({
        url: './test1.php',
        type: 'POST',
        data: { imageData: image }
    })

结果正常,我可以稍后保存图像。 (仅发送图像数据,而不是表单数据)

但是当我尝试发送图像和表单数据时:

var image = signaturePad.toDataURL();
data = $('#form').serialize() + '&imageData=' + image;
$.ajax({
        url: './test1.php',
        type: 'POST',
        data: data
    })

图片已保存,但我以后无法打开,我认为发送图片的方式会导致一些错误。

如果我向控制台输出imageData变量,则第一个实验的结果是一个文本块,对于第二个实验,输出是一个文本块但不同,它有新的行字符,如。

最好的解决方案是使用第二个实验,因为我的表单有像输入一样的数组,逻辑编写并正常工作,但图像因某些未知原因而被破坏。任何帮助表示赞赏。

编辑:图像是base64编码的png。

1 个答案:

答案 0 :(得分:2)

解决方案是在表单中使用serializeArray()然后按下' imageData' (base64图像)作为对象的数组:

f = str(f) + s

现在创建了图像并通过帖子发送没有任何问题!