Mam podstawowy formularz HTML, z którego mogę pobrać trochę informacji, które badam w Firebug.
Moim jedynym problemem jest to, że próbuję kodować base64 dane pliku, zanim zostaną wysłane na serwer, gdzie wymagane jest, aby były w tej formie, aby zostały zapisane w bazie danych.
<input type="file" id="fileupload" />
A w Javascript + jQuery:
var file = $('#fileupload').attr("files")[0];
Mam kilka operacji opartych na dostępnym javascript: .getAsBinary (), .getAsText (), .getAsTextURL
Jednak żaden z tych zwrotów nie zwraca użytecznego tekstu, który można wstawić, ponieważ zawierają bezużyteczne `` znaki '' - nie chcę, aby w przesłanym pliku pojawiało się `` ogłaszanie zwrotne '' i potrzebuję wielu formularzy dotyczących określonych obiektów, więc jest to ważne. pobierz plik i użyj w ten sposób Javascript.
Jak mam pobrać plik w taki sposób, żebym mógł użyć jednego z powszechnie dostępnych koderów Javascript base64 !?
Dzięki
Aktualizacja - Zaczynam bounty tutaj, potrzebna jest obsługa wielu przeglądarek !!!
Tutaj jestem:
<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>
Kilka problemów z obsługą wielu przeglądarek:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
Ponadto IE nie obsługuje:
var file = $j(fileUpload.toString()).attr('files')[0];
Więc muszę zamienić na:
var element = 'id';
var element = document.getElementById(id);
Wsparcie dla IE.
Działa to w Firefoksie, Chrome i Safari (ale nie koduje poprawnie pliku lub przynajmniej po jego opublikowaniu plik nie wychodzi poprawnie)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
Również,
file.readAsArrayBuffer()
Wydaje się, że jest obsługiwany tylko w HTML5?
Wiele osób zasugerowało: http://www.webtoolkit.info/javascript-base64.html
Ale to zwraca tylko błąd en w metodzie UTF_8 przed kodowaniem base64? (lub pusty ciąg)
var encoded = Base64.encode(file);