Firebugで調べている情報を取得できる基本的なHTMLフォームがあります。
私の唯一の問題は、サーバーに送信される前にファイルデータをbase64でエンコードしようとしていることです。データベースに保存するには、その形式である必要があります。
<input type="file" id="fileupload" />
そしてJavascript + jQueryで:
var file = $('#fileupload').attr("files")[0];
利用可能なjavascriptに基づいたいくつかの操作があります:.getAsBinary()、. getAsText()、. getAsTextURL
ただし、これらはいずれも、使用できない「文字」が含まれているため挿入できる使用可能なテキストを返しません。アップロードしたファイルで「ポストバック」が発生したくないので、特定のオブジェクトをターゲットとする複数のフォームを用意する必要があるため、重要です。この方法でファイルを取得し、JavaScriptを使用します。
広く入手可能なJavascript base64エンコーダの1つを使用できるようにファイルを取得するにはどうすればよいですか?
ありがとう
更新-ここから報奨金を開始します。クロスブラウザのサポートが必要です!!!
ここに私がいるところがあります:
<input type="file" id="fileuploadform" />
<script type="text/javascript">
var uploadformid = 'fileuploadform';
var uploadform = document.getElementById(uploadformid);
/* method to fetch and encode specific file here based on different browsers */
</script>
クロスブラウザーサポートに関するいくつかの問題:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
また、IEは以下をサポートしていません。
var file = $j(fileUpload.toString()).attr('files')[0];
だから私は次のものと置き換える必要があります:
var element = 'id';
var element = document.getElementById(id);
IEサポート用。
これは、Firefox、Chrome、Safariで機能します(ただし、ファイルを適切にエンコードしないか、少なくとも投稿後にファイルが正しく出力されません)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
また、
file.readAsArrayBuffer()
HTML5でのみサポートされているようですか?
多くの人が提案しました: http : //www.webtoolkit.info/javascript-base64.html
しかし、これは、base64エンコードする前にUTF_8メソッドでエラーを返すだけですか?(または空の文字列)
var encoded = Base64.encode(file);