2014-06-18 15 views
22

Tôi đã có đoạn mã sau trong Javascript của tôi:Làm thế nào để loại bỏ dải từ chuỗi Javascript FileReader base64?

var reader = new FileReader(); 
reader.onloadend = function() { 
    alert(reader.result); 
}; 

Điều này cho thấy tôi những dữ liệu sau:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAAAAABX3VL4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gYSDCUgSze0AAAAAA5JREFUCNdjrGJgYmAAAAJ0AH4SDHVIAAAAAElFTkSuQmCC 

Cái này là tôi chỉ muốn phần sau dấu phẩy. Tôi đã thử lấy nó từ reader.result.value, reader.result.valueOf() và một số kết hợp khác, nhưng không thể tìm đúng kết quả để JUST nhận chuỗi base64 bắt đầu từ sau dấu phẩy. Vì vậy, một ý tưởng thứ hai là chỉ cần loại bỏ các dấu phẩy và tất cả những gì trước đó, nhưng tôi không chắc chắn làm thế nào để làm điều đó.

Có ai có ý tưởng làm thế nào để hoàn thành công việc này không? Tất cả các mẹo đều được chào đón!

+3

'base64result = reader.result.split var ('') [1]; 'hoặc' var base64result = reader.result.substr (reader.result.indexOf (',') + 1); ' –

Trả lời

42

Các chức năng sau đây sẽ đạt được kết quả mong muốn của bạn:

var base64result = reader.result.split(',')[1]; 

này chia tách chuỗi thành một mảng các chuỗi với mục đầu tiên (chỉ số 0) chứa data:image/png;base64 và mục thứ hai (chỉ số 1) chứa base64 dữ liệu được mã hóa.

Một giải pháp khác là để tìm ra chỉ số của dấu phẩy và sau đó chỉ cần cắt đứt tất cả mọi thứ trước và bao gồm cả dấu phẩy:

var base64result = reader.result.substr(reader.result.indexOf(',') + 1); 

Xem JSFiddle.

+0

Chúng ta có biết chắc chắn rằng dấu phẩy sẽ không bao giờ xảy ra trong chuỗi base64 không? Nếu có, các giải pháp rất tốt. –

+4

Có, chúng tôi biết chắc chắn. Mã hóa Base64 sử dụng các ký tự '[a-z, A-Z, 0-9, +, /]' để mã hóa. '=' cũng được sử dụng để đệm. Xem [Base64] (https://en.wikipedia.org/wiki/Base64). –

+0

Tuyệt vời. Cảm ơn bạn rất nhiều vì lời giải thích của bạn. –

9
let reader: FileReader = new FileReader(); 

reader.onloadend = (e) => { 
    let base64String = reader.result.split(',').pop(); 
}; 

hoặc

let base64String = /,(.+)/.exec(reader.result)[1]; 
Các vấn đề liên quan