将base64映像发送到服务器

时间:2013-03-13 13:21:35

标签: php javascript mysql image base64

在我的应用程序中,我需要将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());
}

?>

1 个答案:

答案 0 :(得分:0)

700个字符很可能不足以存储您的图像,尤其是在Base64编码的情况下。如果为此列插入一个大的值,MySQL将默默地截断它,从而导致损坏。

解决方案:检查您可能要存储的图像的最大大小,然后相应地调整列的大小。在对列进行更改时,您可能还应考虑将图像存储为二进制值以保证安全。但似乎没有原生的MySQL函数可以帮助解决这个问题。

重复其他人已经提到的内容:您的代码中存在一个巨大的安全漏洞。您应该采取措施来防止SQL注入攻击。 @Andreas的链接是一个很好的起点。

相关问题