从数据库检索后解码base64图像失败
decode base64 image fail after retrive from database
让它变得简单。但我想不通。我正在使用cordova相机插件,它给了我直接的base64数据,如下所示。。
navigator.camera.getPicture(onSuccess, onFail, {quality: 50,
destinationType: Camera.DestinationType.DATA_URL});
function onSuccess(imageData) {
$('#userFullProfileImage').attr('src', "data:image/jpeg;base64," + imageData);
}
它正在发挥作用。因为它显示了userFullProfileImage的设置源之后的图像因此编码是正确的。
现在,我正在尝试将imageData保存在mysql中,并通过ajax检索它。
检索后,我匹配了几行,没有发现错误imageData保存前的和检索后的imageData在我看来是一样的(但保存数据省略了所有+字符)
检索到的图像数据无法解码。我也使用在线base64解码器。但没有希望。可能因为这个原因缺少+字符。
我已经逐行检查了所有其他字符,imageData都是相同的。
所以现在帮助我,这可能是我的情况下的原因。
如果您的+字符被剥离,听起来就像是在通过URL编码方案,该方案可以将+转换为空格,然后base64解码器可以将其作为空格忽略。这可能是AJAX请求的一部分,它默认为application/x-www-form-urlencoded。
如果你说你要提交url编码的数据,那么不要对其进行编码,服务器在收到时会对其进行错误解码。
尝试在AJAX请求中设置您的内容类型,例如
$.post({
url: yourUrl,
data: JSON.stringify(yourBase64string),
contentType: "application/json",
dataType: "json"
});
其中contentType将告诉服务器您将以JSON形式提交数据,dataType将告知服务器您希望响应的格式(因此在这种情况下,服务器应以JSON形式发送响应,但您也可以使用dataType,例如"text")
您也可以使用"text/plain"的contentType并删除JSON.stringify,但我还没有测试过。
我的问题是通过ajax发送图像数据。
encodeURIComponent(imageData); //This solve my problem.
编码后的数据现在可以安全地保存在数据库中。
从数据库中检索编码数据后,我刚刚使用了另一个函数。
decodeURIComponent(encodedData); //same of imageData
- Html页面上的多个Base64图像和平滑加载
- 如何使用jquery将base64图像路径转换为真实路径
- 显示生成的gif;base64图像使用C#代码隐藏在img中使用JavaScript
- 一个javascript实现base64图像编码并将结果写入文本文件
- base64图像未显示
- 如何使用JavaScript将Base64图像更改为常规图像
- 如何使用Java解码由window.btoa编码的base64图像
- 在 servlet 上上传画布 base64 图像
- 将base64图像数据作为src分配给图像时,Firefox和Chrome上的结果不一致
- 在jQuery中更新base64图像字符串时未进行图像刷新
- 我已经从d3图表中创建了一个base64图像,需要使用客户端javascript或angular将其发布到faceboo
- 使用Opera自定义base64图像光标-可能
- 如何在灯箱中打开Base64图像
- 循环浏览 base64 图像并保存为 pdf
- Base64 图像通过 Ajax encodeURIComponent 发送
- 合并 base64 图像
- 在javascript中将base64图像转换为文件,或者如何使用jquery ajax传递一个大的base64字符串
- Base64 图像存储
- 如何在Raphael paper.image中嵌入Base64图像格式
- Javascript:调整base64图像的大小并以非异步方式返回字符串