2012-03-05 18 views
2

Iamはhtmlでプロジェクトを行っています。 イメージをbase64に変換する関数があります。以下のコードを参照してください。JavaScriptを使用してローカル画像をbase64に変換する

function getBase64Image() 
{ 
    p = document.getElementById("picField").value; 
    img.setAttribute('src', p); 
    var canvas = document.createElement("canvas"); 
    canvas.width = img.width; 
    canvas.height = img.height; 
    var ctx = canvas.getContext("2d"); 
    ctx.drawImage(img, 0, 0); 
    var dataURL = canvas.toDataURL("image/png"); 
    var r = dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
    base64 = r; 
    alert(base64); 
} 

が、私は私のウェブサイトを展開したときに問題が、ある は私がそのが機能していない、IIS上で私のHTMLファイルを置かれたとき、それはIVBのような完全なベース64のフォーマットを示しているローカルファイルシステムで意味を意味し.... 、 しかし、iis上ではbase64コードをちょうど "base"として与えています。 だから私は知っていないiisで動作していないので、私を助けてください、私もiisで動作するhtmlファイルを送信してください。

+0

これは、クライアント側のコードで、IISとは何かを持つべきではありません。あなたはおそらく、同じ原産地政策の問題を抱えています。どのような種類のフィールドは 'document.getElementById(" picField ")'であり、URLはその中にどのように見えますか? –

+0

ofcourse、同じhtmlファイルがbase64文字列をはっきりと示していますが、iis上に置かれたときには表示されません。なぜですか? –

+0

私は怖い動作しません –

答えて

1

私はあなたがSame Origin Policy問題を持っているかなり確信しています。

IISでページを実行すると、ローカルではなく別のコンテキストで実行されます。file://ではなく、http://で実行されます。何をしようとする

は、ローカルの画像ファイルを取得し、リモートサイト上のキャンバスにロードされます。セキュリティ上の理由から従来のJavaScriptを使用することはできません。 (これはローカルでもどのように動作するのか分かりませんが、とにかくそれは避けてください)

HTML 5 file APIを使用すると、JavaScriptがローカルファイルに直接アクセスできるようになります。私は関連するいくつかの質問を掘り下げることができるかどうかを見ていきます。

更新:これは役立つはず:

+0

私たちの問題を解決するにはどうしたらいいですか?助けてください –

+0

@ラジャは、答えのリンクを参照してください。ここでは若干異なる概念を使用する必要があります。 –

+0

全くそのが機能していないが、uが行うことができない私は、申し訳ありません –

関連する問題