Firebug'da incelediğim bir miktar bilgiyi alabileceğim temel bir HTML formum var.
Tek sorunum , veritabanına kaydedilmesi için bu formda olması gereken sunucuya gönderilmeden önce dosya verilerini base64 kodlamaya çalışıyorum .
<input type="file" id="fileupload" />
Ve Javascript + jQuery'de:
var file = $('#fileupload').attr("files")[0];
Mevcut javascript'e dayalı bazı işlemlerim var: .getAsBinary (), .getAsText (), .getAsTextURL
Ancak bu kullanılabilir metinlerin hiçbiri kullanılamayan 'karakterler' içerdikleri için eklenebilen kullanılabilir metinleri döndürmez - yüklediğim dosyamda bir 'geri gönderme' olmasını istemiyorum ve belirli nesneleri hedefleyen birden fazla forma ihtiyacım olduğu için bu önemli dosyayı alın ve Javascript'i bu şekilde kullanın.
Dosyayı, yaygın olarak bulunan Javascript base64 kodlayıcılarından birini kullanabilecek şekilde nasıl edinmeliyim !?
Teşekkürler
Güncelleme - Ödül burada başlıyor, tarayıcılar arası desteğe ihtiyacınız var !!!
Ben buradayım:
<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>
Çapraz tarayıcı desteğiyle ilgili birkaç sorun:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
Ayrıca, IE şunları desteklemez:
var file = $j(fileUpload.toString()).attr('files')[0];
Bu yüzden şununla değiştirmeliyim:
var element = 'id';
var element = document.getElementById(id);
IE Desteği için.
Bu, Firefox, Chrome ve Safari'de çalışır (ancak dosyayı doğru şekilde kodlamaz veya en azından gönderildikten sonra dosya doğru çıkmaz)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
Ayrıca,
file.readAsArrayBuffer()
Görünüşe göre sadece HTML5'te mi destekleniyor?
Pek çok kişi önerdi: http://www.webtoolkit.info/javascript-base64.html
Ancak bu, UTF_8 yönteminde base64 kodlamadan önce yalnızca en hatası döndürür? (veya boş bir dize)
var encoded = Base64.encode(file);