2012-10-08 90 views
1

我在将一个base64图像字符串(嵌入在json对象中)发送到服务器时出现问题。js:将base64字符串发送到php服务器页面

这里是JS代码:

var sMimeType; 
var id_g; 
var tipo_g; 
var lang_g; 

function fileLoaded(frEvnt){ 
    var sFBody = frEvnt.target.result; 
    var sBodyBase64 = btoa(sFBody); 
    var myobj = {my_id: id_g, my_tipo: tipo_g, my_lang:lang_g, img_mime_type: sMimeType, img_base64 :sBodyBase64}; 
    //$("#error").html(JSON.stringify(myobj)); 
    $.ajax({ 
     url: "up_img.php", 
     data: JSON.stringify(myobj), 
     type: 'POST', 
     success:function(a) {/*window.location = tipo_g+".php?l="+lang_g*/alert(a);}, 
     error:function() {$("#error").html("error")} 
    }); 

} 
function Upload(id,tipo){ 
    lang = document[id].l.value; 
    var oFile = document[id].img.files[0]; 
    id_g = id; 
    tipo_g = tipo; 
    lang_g = lang; 
    if(oFile){ 
     var oFReader = new FileReader(); 
     oFReader.onload = fileLoaded; 
     sMimeType = oFile.type; 
      oFReader.readAsBinaryString(oFile); 
    } 

} 

这里是up_img.php

require_once('dbconn.php'); 
require_once('../utility/sec.php'); 


$json = json_decode(file_get_contents("php://input"),true); 

$id = ""; 
$id = $json['my_id']; 
$lang = ""; 
$lang = $json['my_lang']; 
$tipo = ""; 
$tipo = $json['my_tipo']; 
$img_mime = ""; 
$img_mime = $json['img_mime_type']; 
$img_base64 = ""; 
$img_base64 = base64_decode($json['img_base64']); 
$event = new event($tipo,$lang); 


$event->upload_img($img_base64,$img_mime,$id); 

这里的$event->upload_img($img_base64,$img_mime,$id);

public function upload_img($img,$mime,$id){ 
     if($this->check_img($id)){ 
      //$img = str_replace('data:image/png;base64,', '', $img); 
      switch($mime){ 
       case "image/png": case "image/jpeg": case "image/jpg": case "image/gif": case "image/tiff":{ 
        $img = str_replace(' ', '+', $img); 
        $data = $img; 
        $ext = explode('/',$mime); 
        $file = $this->get_folder_picture() . md5($id) . '.' . $ext[1]; 
        $success = file_put_contents($file, $data); 
        if($success) 
        { 
         $newconn = new event($this->getTipo(),$this->getLang()); 
         $newconn->open_conn(); 
         $query = sprintf("insert into images (`Id`,`Ext`) values (%d,'%s')", 
          $id,$ext[1]); 
         $q = mysql_query($query,$newconn->getLink()); 
         echo mysql_error($newconn->getLink()); 
         $newconn->close_conn(); 

        }else 
         echo 'Unable to save the file.'; 
        break; 
       } 
       default:{ 
        echo "not a valid image. image type accepted are jpge,jpg,png,tiff and gif: u gave ".$mime; 
        break; 
       } 

      } 

     }else{ 
      print "image error";  
     } 
    } 

的问题是,一旦我想象的图像存储在服务器(<img src=\"$img\" alt='' title='' class='box_img' name='img_view' />其中$img是图像的路径),我看到这样的事情 enter image description here

但我原来的图像看起来像这样 enter image description here

任何人都可以帮我吗?

回答

3

找到解决方案!只是删除了行

$img = str_replace(' ', '+', $img); 

现在的图像看起来相同!!!!

相关问题