如何从Javascript FileReader base64字符串中删除类型?

kra*_*r65 46 javascript base64 strip

我的Javascript中有以下代码:

var reader = new FileReader();
reader.onloadend = function () {
    alert(reader.result);
};
Run Code Online (Sandbox Code Playgroud)

这向我展示了以下数据:

 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAAAAABX3VL4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gYSDCUgSze0AAAAAA5JREFUCNdjrGJgYmAAAAJ0AH4SDHVIAAAAAElFTkSuQmCC
Run Code Online (Sandbox Code Playgroud)

问题是我只想要逗号之后的部分.我试图得到它reader.result.value,reader.result.valueOf()还有一些其他的组合,但无法找到正确的一个先手从逗号后开始的base64字符串.所以第二个想法是简单地删除逗号以及之前的所有内容,但我有点不确定如何做到这一点.

有人会知道如何完成这项工作吗?欢迎所有提示!

San*_*nen 92

以下功能将达到您想要的效果:

var base64result = reader.result.split(',')[1];
Run Code Online (Sandbox Code Playgroud)

这将字符串拆分为一个字符串数组,其中第一个项目(索引0)包含data:image/png;base64,第二个项目(索引1)包含base64编码数据.

另一个解决方案是找到逗号的索引,然后简单地删除所有内容,包括逗号:

var base64result = reader.result.substr(reader.result.indexOf(',') + 1);
Run Code Online (Sandbox Code Playgroud)

JSFiddle.

  • 是的,我们肯定知道.Base64编码使用字符`[az,AZ,0-9,+,/]`进行编码.`=`也用于填充.参见[Base64](https://en.wikipedia.org/wiki/Base64). (8认同)
  • 我们是否确定,逗号永远不会出现在 Base64 字符串本身中?如果是这样,非常好的解决方案。 (2认同)

小智 18

let reader: FileReader = new FileReader();

 reader.onloadend = (e) => {
    let base64String = reader.result.split(',').pop();
 };
Run Code Online (Sandbox Code Playgroud)

要么

let base64String = /,(.+)/.exec(reader.result)[1];
Run Code Online (Sandbox Code Playgroud)


Dus*_*han 5

您可以尝试使用;base64,拆分数据。

// In here you are getting the data type. Ex - png, jpg, jpeg, etc. You can use this for any further purposes.
var dataType = reader.result.split(';base64,')[1];

// In here you are getting the base64 string and you can use this for your purpose.
var base64result = reader.result.split(';base64,')[1];
Run Code Online (Sandbox Code Playgroud)