Angular中如何从选中的PDF文件获取字节码并存入数据库
格式合规性判断
你拿到的data:application/pdf;base64,JVBERi0xLjQKJfbk/N8KM.......是完全符合标准Data URL规范的返回结果,属于FileReader.readAsDataURL()接口的正常输出:
- 前缀
data:application/pdf;base64,是声明段,分别表示内容类型为PDF、编码格式为base64 - 后续的
JVBERi0xLjQ是PDF文件标准开头%PDF-1.4的base64编码结果,和实际文件内容匹配,没有问题
存入数据库的处理建议
可以根据你的业务场景选择两种处理方案:
- 直接存储完整DataURL:不需要额外处理,直接存入即可,要求数据库字段设置为长文本类型(如MySQL的LONGTEXT)或者BLOB类型即可。注意base64编码会让数据体积比原始PDF大33%,大体积PDF不推荐这种存储方式。
- 仅存储纯base64内容:可以用字符串截取方法去掉前缀
data:application/pdf;base64,后再存,后续需要使用PDF的时候,拼接回前缀即可直接用于前端渲染、转文件下载等场景,比存完整DataURL略省存储空间。
之前byte未定义问题的原因补充
你之前出现byte未定义大概率是因为之前调用了readAsArrayBuffer()接口,拿到的ArrayBuffer不能直接当作字节数组使用,需要手动转成Uint8Array类型才能获取到字节内容,如果你后续需要处理原始二进制流可以参考这个逻辑。
内容的提问来源于stack exchange,提问作者natyus
相关产品推荐
相关产品推荐

