Saya memiliki formulir HTML dasar yang darinya saya dapat mengambil sedikit informasi yang saya periksa di Firebug.
Satu-satunya masalah saya adalah saya mencoba untuk menyandikan base64 data file sebelum dikirim ke server di mana itu harus dalam bentuk itu untuk disimpan ke database.
<input type="file" id="fileupload" />
Dan di Javascript + jQuery:
var file = $('#fileupload').attr("files")[0];
Saya memiliki beberapa operasi berdasarkan javascript yang tersedia: .getAsBinary (), .getAsText (), .getAsTextURL
Namun tidak satu pun dari teks yang dapat digunakan kembali ini yang dapat dimasukkan karena mengandung 'karakter' yang tidak dapat digunakan - Saya tidak ingin terjadi 'postback' di file saya yang diunggah, dan saya perlu memiliki beberapa formulir yang menargetkan objek tertentu jadi penting bagi saya dapatkan file dan gunakan Javascript dengan cara ini.
Bagaimana cara mendapatkan file sedemikian rupa sehingga saya dapat menggunakan salah satu pembuat enkode Javascript base64 yang tersedia secara luas !?
Terima kasih
Perbarui - Mulai bounty di sini, perlu dukungan lintas browser !!!
Di sinilah saya berada:
<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>
Beberapa masalah dengan dukungan lintas browser:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
Selain itu, IE tidak mendukung:
var file = $j(fileUpload.toString()).attr('files')[0];
Jadi saya harus mengganti dengan:
var element = 'id';
var element = document.getElementById(id);
Untuk Dukungan IE.
Ini berfungsi di Firefox, Chrome dan, Safari (tetapi tidak menyandikan file dengan benar, atau setidaknya setelah diposting, file tidak keluar dengan benar)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
Juga,
file.readAsArrayBuffer()
Sepertinya hanya didukung di HTML5?
Banyak orang menyarankan: http://www.webtoolkit.info/javascript-base64.html
Tapi ini hanya mengembalikan kesalahan en pada metode UTF_8 sebelum base64 mengkodekan? (atau string kosong)
var encoded = Base64.encode(file);