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