2015-10-23 8 views
7

私はキャンバスを持ち、canvas.toDataURL('image/png')の助けを借りてそれから画像データを取り出す。入力タイプ= "ファイル" base64画像データを設定

問題:<input type="file" />ではなく、base64でエンコードされたデータのvalueとしてファイルパスを望んでいます。

質問:ローカルファイルシステムにそれらを保存せずに<input type="file" />の助けを借りて、サーバーにbase64で画像データを送信する方法は?

私の回避策は:は隠し入力<input type="file" />を試してみましたが、サーバは

filenameプロパティを必要と多分それはXmlHttpRequestのでこれを克服することが可能ですか?

+1

は、なぜあなたは、入力をファイルにbase64で画像を変換する必要がありますか? base64文字列をサーバーに送信し、それをイメージサーバー側に変換するだけです。 –

+1

@ YeldarKurmangaliyevサーバーは第三者ですが、私はAPIを変更することはできません。 –

+0

ああ、そうだ。私は、この記事はあなたを助けることができると思います:http://YerdarKurmangaliyevありがとうございました:@stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata/5100158 –

答えて

0

あなたは、FileReaderのを使用し、ここでの例を確認することができます:https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

+0

私のイメージはローカルではなく、メモリ内にのみ存在します。それは働くだろうか? –

+0

私は、XHR(XMLHttpRequest)を使ってdataUrlをサーバー –

8

はちょうどあなたのフォームに隠し入力要素を作成します。送信する前に要素の値にデータを添付し

<input type="hidden" name="myHiddenField"> 

タイプに気づきます)。

var imageData = canvas.toDataURL('image/png'); 
document.getElementsByName("myHiddenField")[0].setAttribute("value", imageData); 

UPDATE

サーバーの需要は、input要素の名前としてその文字列が含まれ、提出されたデータには、パラメータ「ファイル名」を持っている場合。

<input type="hidden" name="filename"/> 

これは、フォームに「filename」パラメータが含まれているデータを送信するようにトリックします。

あなたはこのためにXMLHttpRequestを使用したい場合は、以下のサンプルです:

//Prepare data to be sent 
var imageData = canvas.toDataURL('image/png'); 
var params = "filename=" + imageData; 

//Initiate the request 
var httpRequest = new XMLHttpRequest();    
httpRequest.open('POST', 'test.php', true); 

//Send proper headers 
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
httpRequest.setRequestHeader("Content-length", params.length); 
httpRequest.setRequestHeader("Connection", "close"); 

//Send your data 
httpRequest.send(params); 
+1

unfortunatellyに送ることができます。これはサーバーが 'filename'パラメータを必要とするため動作しません。 http://stackoverflow.com/questions/33297565/submit-hidden-input-with-filename-parameter –

+0

を参照してください。トリックはinput要素でname = "filename"を使用できることです。私はこれとXMLHttpRequestメソッドで私の答えを更新しました。 –

+0

私は 'new FormData(formEl)'を使ってmanagadを編集します –

関連する問題