ฉันมีรูปแบบ 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 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
แต่สิ่งนี้ส่งคืนเฉพาะข้อผิดพลาดบนเมธอด UTF_8 ก่อนที่จะเข้ารหัส base64? (หรือสตริงว่าง)
var encoded = Base64.encode(file);