Tôi đã có một biểu mẫu HTML cơ bản mà từ đó tôi có thể lấy một chút thông tin mà tôi đang kiểm tra trong Firebug.
Vấn đề duy nhất của tôi là tôi đang cố gắng mã hóa base64 dữ liệu tệp trước khi nó được gửi đến máy chủ, nơi nó bắt buộc phải ở dạng đó để được lưu vào cơ sở dữ liệu.
<input type="file" id="fileupload" />
Và trong Javascript + jQuery:
var file = $('#fileupload').attr("files")[0];
Tôi có một số hoạt động dựa trên javascript khả dụng: .getAsBinary (), .getAsText (), .getAsTextURL
Tuy nhiên, không có văn bản nào trong số này trả lại có thể sử dụng có thể được chèn vì chúng chứa các 'ký tự' không sử dụng được - Tôi không muốn xảy ra hiện tượng 'đăng lại' trong tệp của mình đã tải lên và tôi cần có nhiều biểu mẫu nhắm mục tiêu các đối tượng cụ thể nên điều quan trọng là tôi lấy tệp và sử dụng Javascript theo cách này.
Làm cách nào để tải tệp theo cách mà tôi có thể sử dụng một trong những bộ mã hóa Javascript base64 phổ biến rộng rãi !?
Cảm ơn
Cập nhật - Bắt đầu tiền thưởng tại đây, cần hỗ trợ nhiều trình duyệt !!!
Đây là nơi tôi đang ở:
<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>
Một số vấn đề với hỗ trợ nhiều trình duyệt:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
Ngoài ra, IE không hỗ trợ:
var file = $j(fileUpload.toString()).attr('files')[0];
Vì vậy, tôi phải thay thế bằng:
var element = 'id';
var element = document.getElementById(id);
Đối với Hỗ trợ IE.
Tính năng này hoạt động trong Firefox, Chrome và Safari (nhưng không mã hóa tệp đúng cách hoặc ít nhất là sau khi được đăng, tệp không xuất hiện đúng cách)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
Cũng thế,
file.readAsArrayBuffer()
Có vẻ như chỉ được hỗ trợ trong HTML5?
Rất nhiều người đã đề xuất: http://www.webtoolkit.info/javascript-base64.html
Nhưng điều này chỉ trả về lỗi vi trên phương thức UTF_8 trước khi nó mã hóa base64? (hoặc một chuỗi trống)
var encoded = Base64.encode(file);