在我的应用程序中,我需要将base64格式的图像发送到服务器。目前我正在做的是,我只是将base64图像字符串发送到服务器,当我从服务器返回该字符串时,我无法显示图像,我收到错误:图像已损坏。发送和获取base64格式图像的确切方法是什么?我使用的代码如下:JS用于发送base64图像源:
var imageObj = $("#target")[0];
var canvas = $("#preview")[0];
var context = canvas.getContext("2d");
context.drawImage(imageObj, c.x, c.y, c.w, c.h, 0, 0, canvas.width, canvas.height);
vData = canvas.toDataURL();
$('#crop_result').attr('src', vData);
function saveCroppedImage()
{
var params='image_name='+vData;
$.post('localhost/PHP/addImage.php',params,
function(details){
}, "json")
.error(function(jqXHR, textStatus, errorThrown) {
alert('err');
});
}
PHP源代码:
<?php
include("config.php");
$clip_Name = $_REQUEST['image_name'];
$artist_Name ="ash";
$sql = "INSERT INTO tblImageSave (fldImageSource)
VALUES('$base64Img')";
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
?>
答案 0 :(得分:0)
700个字符很可能不足以存储您的图像,尤其是在Base64编码的情况下。如果为此列插入一个大的值,MySQL将默默地截断它,从而导致损坏。
解决方案:检查您可能要存储的图像的最大大小,然后相应地调整列的大小。在对列进行更改时,您可能还应考虑将图像存储为二进制值以保证安全。但似乎没有原生的MySQL函数可以帮助解决这个问题。
重复其他人已经提到的内容:您的代码中存在一个巨大的安全漏洞。您应该采取措施来防止SQL注入攻击。 @Andreas的链接是一个很好的起点。