嗨,任何人都可以帮助我,我只需要获取我想要上传的 csv 文件的 base_64 代码
这是我的带有 csv 过滤器的代码
function readCSV(input) {
if (input.files && input.files[0]) {
var filename = input.files[0].name;
var ext = filename.split('.').pop();
if(input.files[0].type == "text/csv" || ext == "csv" || ext == "xls"){
var reader = new FileReader();
reader.onload = function (e) {
var base_64 = e.target.result;
console.log(base_64);
var array = new Uint8Array(100);
array[42] = 10;
$('#file_name').html(input.files[0].name);
$('#filename').val(input.files[0].name);
$('#content').val(base_64);
}
reader.readAsDataURL(input.files[0]);
}else{
$('#file_name').html('<span style="color:red; font-size:11px"><i class="fa fa-ban"></i> Invalid File Please try again!</span>');
}
}
}
当我 console.log(base_64)
Google Chrome 的结果是
data:base64,UHJvZHVjdCBOYW1lL....(rest of base_64 string)
我只需要有 base_64 字符串
所以我想出了这个解决方案
//替换函数
content.replace('data:;base64,', '');
我只是删除了字符串中的data:base64,
但是当我在 Firefox 中尝试时,结果是
data:application/octet-stream;base64,UHJvZHVjdCBOYW1lL....(base_64 字符串的其余部分)
与第一个结果不同,因此我的替换功能不起作用
但我不想添加另一个替换功能,因为我担心如果浏览器推送更新,data:base64
可能会是 1.0.data:base64
或v.1.data:base64
因此,每当字符串发生更改时,我的系统就会失败。
有人可以帮我吗?我只需要获取 base_64 字符串,提前致谢。
最佳答案
我将使用逗号作为分隔符来分割字符串,然后从新创建的数组中获取最后一个元素,该元素将代表您的 Base64 数据:
//split into ['data:application/octet-stream;base64', 'UHJvZHVjdCBOYW1lL']
var arr = content.split(',');
var base64 = arr[arr.length-1];
正如 bergi 提到的,base64 数据是 defined to appear最后一个逗号之后
关于javascript - 如何使用具有浏览器兼容性的jquery获取文件上传的base_64字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24073893/