2011-09-11 20 views
4


にサーバーでそれをデコードし、Javascriptを、
PHPでXHRは、私は、サーバーにbase64でエンコードされたIMGを送信するためにしようとしていますbase64文字列を送信し、ファイル

var xhr=new XMLHttpRequest() 
var reader=new FileReader() 
reader.onloadend=function(e){ 
xhr.onload=function(e){ 
alert(xhr.responseText) 
} 
xhr.open("POST","upload.php"); 
     xhr.setRequestHeader("Cache-Control", "no-cache"); 
     xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 
     //xhr.setRequestHeader("X-File-Name", file.name); 
     //xhr.setRequestHeader("X-File-Type",file.type) 
xhr.send(e.target.result) 
} 
reader.readAsDataURL(file) 
},false) 


のように見えるようになります。この:

echo "some response Text"; 
$postdata = file_get_contents("php://input"); 
file_put_contents('MyFile.jpg', base64_decode($postdata)); 

そして、最終的には、サーバは正確に送信されたファイルと同じ大きさ、しかし、それはを開くことができないファイルを取得 いくつかのアイディアがありますか?ありがとうございます!

+1

バイナリエディタでそれらを開き、何も明らかに間違ってありますかどうかを確認します。 – TheCodeKing

答えて

18
reader.readAsDataURL(file) 

データURLは、ファイルのbase64バージョンと同じではありません。あなたはそれに余分なゴミを入れます。次のようになります。

data:[<MIME-type>][;charset=<encoding>][;base64],<data> 

Wikipediaを参照してください。その上で、単純な正規表現をしている

試してみてください。

var data = dataURL.match(/,(.*)$/)[1]; 

それとも、あなたのコードでは、

xhr.send(e.target.result.match(/,(.*)$/)[1]); 
+0

説明をありがとう – Nick

+1

これは、Javascriptで余分なものを取り除くのに最適な働きをしたので、サーバに到達するまでには心配する必要はありません。 – geekyaleks

関連する問題