Ionic2:将文件选择器 uri 转换为文件路径



Ionic native分别提供了文件选择器和文件插件。File 插件需要文件的绝对路径才能读取,但无法选择文件。

为了选择文件,

我使用了文件选择器,它返回一个URI。

import { FileChooser } from '@ionic-native/file-chooser';
constructor(private fileChooser: FileChooser) { }
...
this.fileChooser.open()
  .then(uri => console.log(uri))
  .catch(e => console.log(e));

uri 看起来像这样

content://com.android.providers.media.documents/document/image%3A68
文件

插件可以利用路径读取文件。

import { File } from '@ionic-native/file';
constructor(private file: File) { }
...
this.file.readAsText(this.file.dataDirectory, 'myFile')
.then((content) =>
       console.log(this.file.dataDirectory + 'myFile');
       console.log(content)
).catch( err => 
       console.log('File doesnt exist')
);

路径如下所示。

file:///data/data/com.myapp.myappmobile/files/myFile

我如何利用这两个组件。使用FileChooser选择一个文件,然后在Ionic 2中读取它。

请安装文件路径插件以获取本机路径。然后使用以下代码。例如,假设您正在选择一个图像文件。

nativepath: any;
uploadfn(){
   this.fileChooser.open().then((url) => {
  (<any>window).FilePath.resolveNativePath(url, (result) => {
    this.nativepath = result;
    this.readimage();
  }
  )
})
}  
readimage() {
    (<any>window).resolveLocalFileSystemURL(this.nativepath, (res) => {
      res.file((resFile) => {
        var reader = new FileReader();
        reader.readAsArrayBuffer(resFile);
        reader.onloadend = (evt: any) => {
          var imgBlob = new Blob([evt.target.result], { type: 'image/jpeg'});
          //do what you want to do with the file
        }
      })
    })
  }

请看这里 - http://tphangout.com/ionic-2-serving-images-with-firebase-storage/

(介绍如何从手机的文件系统中选择图像并将其上传到Firebase存储(

希望这对你有帮助。谢谢。

使用 FilePath:

import { File } from '@ionic-native/file';
import { FileChooser } from '@ionic-native/file-chooser';
constructor(
    private fileChooser: FileChooser,
    private filePath: FilePath
) {
}
private captureFile(): Promise<any> {
        return new Promise((resolve, reject) => {
            this.fileChooser.open().then((uri) => {
                this.filePath.resolveNativePath(uri)
                    .then((filePath) => {
                        alert(filePath)                      
                    }, (err) => {
                        reject(err);
                    })
            }, (err) => {
                reject(err);
            });
        });
    }

相关内容

  • 没有找到相关文章