-1

私のアプリケーションでは、base64形式の画像をサーバーに送信する必要があります。現在私が行っているのは、base64画像文字列をサーバーに送信しているだけで、その文字列をサーバーから取得すると、画像を表示できず、次のエラーが発生します:画像が破損しています。base64形式の画像を送受信する正確な方法は何ですか?私が使用しているコードは次のとおりです:base64イメージソースを送信するためのJS:

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());
}

?>
4

1 に答える 1

0

特に Base64 でエンコードされている場合は、700 文字では画像を保存するのに十分ではない可能性があります。この列に大きすぎる値を挿入すると、MySQL は暗黙のうちに値を切り捨て、破損を引き起こします。

解決策: 保存するイメージの最大サイズを確認し、それに応じて列のサイズを変更します。列に変更を加えている間、画像をバイナリ値として保存してスペースを確保することも検討する必要があります。しかし、それを助けるネイティブの MySQL 関数はないようです。

他の人がすでに述べたことを繰り返します。コードに大きなセキュリティ ホールがあります。SQL インジェクション攻撃を防ぐための対策を講じる必要があります。@Andreasのリンクは良い出発点です。

于 2013-03-13T14:51:22.450 に答える