У меня есть базовая форма HTML, из которой я могу получить немного информации, которую я изучаю в Firebug.
Единственная проблема, с которой я пытаюсь base64 кодирует данные файла перед его отправкой на сервер, где требуется быть в этой форме для сохранения в базе данных.
<input type="file" id="fileupload" />
И в Javascript + jQuery:
var file = $('#fileupload').attr("files")[0];
У меня есть некоторые операции на основе доступного javascript: .getAsBinary (), .getAsText (), .getAsTextURL
Однако ни один из них не возвращает полезный текст, который можно вставитьтак как они содержат неиспользуемые 'символы' - я не хочу, чтобы в моем файле происходил постбэк, и мне нужно иметь несколько форм, нацеленных на конкретные объекты, поэтому важно, чтобы я получил файл и использовалJavascript следующим образом.
Как получить файл таким образом, чтобы я мог использовать один из широко распространенных кодировщиков Javascript base64 !?
Спасибо
Обновление - Начиная здесь, нужна кросс-браузерная поддержка !!!
Вот где я нахожусь:
<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 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
Но это только возвращает ошибку en в методе UTF_8 до того, как кодирует base64?(или пустая строка)
var encoded = Base64.encode(file);