angular - 使用 Ionic 文件选择器上传 PDF 后文件数据为空,PDF 已损坏
问题描述
我使用的插件Chooser
来自@ionic-native/chooser/ngx
:https ://ionicframework.com/docs/native/chooser
我的目标是从我手机上的下载中获取一个 PDF 文件,并将其发送到base64
. 但我的服务器收到损坏的 PDF。
我这样使用它:
openFiles() {
this.chooser
.getFile('application/pdf')
.then((file) => {
console.log('L-119 --> File : ' + JSON.stringify(file));}
但是当我在控制台中读取文件时,我得到了这个:
我的数据是空的! 所以我对此无能为力,或者我错过了什么?
例如,对于一张照片,我正在使用相机插件,如下所示:
this.camera.getPicture(options).then(
(imageData) => {
console.log('file ' + JSON.stringify(imageData));
我得到这个结果:
我的服务器得到一个正确的文件并且可以打开它。你知道我如何使用chooser
Ionic 插件中的这些信息来正确发送我的 PDF 吗?
我想用离子方式来做。
编辑 1:
使用 Ionic 的 Base64 插件
const filePath = file.uri;
this.base64.encodeFile(filePath).then(
(base64File: string) => {
console.log('my base 64 file is ' + base64File);
},
(err) => {
console.log(err);
}
);
我的插件中的 base64 文件Base64
仍然是空的。
编辑 2:
对于 Base64,我们需要给出文件的路径,而不是 URI。为了获得路径,我Ionic File Path
这样使用:
this.filePath
.resolveNativePath(file.uri)
.then((resultat) => console.log('file path ' + resultat))
.catch((err) => console.log(err));
我收到这个:file:///storage/emulated/0/Download/dummy.pdf'
然后用@Najam Us Saqib 回答,我使用Ionic Base64
那个路径,我得到这个:
现在问题解决了!
解决方案
使用base64
插件Base64将您的文件转换为 base64 并将其发送到服务器。将您的 FilePath 传递给该插件,它会将您的文件转换为 base64。PS:我建议您上传文件,因为它不使用base64。它将提高您的应用程序性能。
import { Base64 } from '@ionic-native/base64/ngx';
constructor(private base64: Base64) { }
...
let filePath: string = 'file:///...';
this.base64.encodeFile(filePath).then((base64File: string) => {
console.log(base64File);
}, (err) => {
console.log(err);
});
推荐阅读
- python - 将 ndarray 从 float32 转换为 uint8 会使图像混乱
- java - 在播放框架中注入具有多个实现的接口
- windows - Docker on Windows: failed: container_linux.go:344: starting container process caused "exec: \"./gradlew\": stat ./gradlew: no such file or directory"
- excel - Formating Cells to only display characters after X number of Characters
- reactjs - react 的性能问题有什么不同的 styled(component) 和 styled(tagname)?
- android - 如何从 androidx 支持库中使用 webkit
- javascript - 调用 Node.appendChild() 添加脚本标签时会发生什么?
- git - 如何从 git commit 中删除受限文件?
- python - `pip install` 是否尊重用于构建 Python 的编译器版本?
- html - 在 Angular 项目中应用 CSS 网格