2016-03-29 6 views
52

は、今私は、この行でFileオブジェクトを取得しています:JavaScriptでファイルをbase64に変換するには?

file = document.querySelector('#files > input[type="file"]').files[0] 

は、私はbase64文字列に変換するために何をすべきベース64にJSONを経由して、このファイルを送信する必要がありますか?

答えて

113

にデータを変換するために使用することができるFileReaderclass

function getBase64(file) { 
    var reader = new FileReader(); 
    reader.readAsDataURL(file); 
    reader.onload = function() { 
    console.log(reader.result); 
    }; 
    reader.onerror = function (error) { 
    console.log('Error: ', error); 
    }; 
} 

var file = document.querySelector('#files > input[type="file"]').files[0]; 
getBase64(file); // prints the base64 string 

注意.files[0]BlobのsublcassあるFileタイプは、であること。したがって、FileReaderと一緒に使用できます。
完全な作業exampleを参照してください。

+1

非常に役に立ちました! –

+0

FileReader APIの詳細:https://developer.mozilla.org/en-US/docs/Web/API/FileReaderとブラウザのサポート:http://caniuse.com/#feat=filereader –

+0

私は '私は変数としてbase64をキャプチャしてからGoogle Apps Scriptに送信したいので、 'console.log(reader.result) 'を使用するのではなく' getBase64() '関数からreturn reader.resultを返します。 'var my_file_as_base64 = getBase64(file)'で関数を呼び出し、 'console.log(my_file_as_base64)'でコンソールに出力しようとしましたが、 'undefined'が返ってきました。どのようにして、base64を変数に適切に割り当てることができますか? – user1063287

3

のJavaScript btoa()関数用いて溶液を試しbase64でエンコードされた文字列

+3

文字列のみで動作しますbtoa。どのようにファイルでそれを使用するには? –

+4

ファイルを最初に読み込んでから、この関数に渡す必要があります。http://jsfiddle.net/eliseosoto/JHQnk/のようなもの –

+0

@PranavManiarあなたのフィドルはもう働きません。リンクを更新できますか? – Dan

9

あなたは約束ベースのソリューションの後であれば、これはそのための適応ドミトリのコード@です:

function getBase64(file) { 
    return new Promise((resolve, reject) => { 
    const reader = new FileReader(); 
    reader.readAsDataURL(file); 
    reader.onload =() => resolve(reader.result); 
    reader.onerror = error => reject(error); 
    }); 
} 

var file = document.querySelector('#files > input[type="file"]').files[0]; 
getBase64(values.profile_image_new[0]).then(
    data => console.log(data) 
); 
関連する問題