如何使用离子原生文件打开器打开(doc,ppt,xlsx,pdf,jpg,png)文件

时间:2018-02-02 13:20:55

标签: angular file ionic3

我正在开发使用离子的混合应用程序。我想使用离子本机文件打开器插件从设备内部或外部存储打开(doc,ppt,xlsx,pdf,jpg,png)文件,但我只能使用下面的代码打开pdf文件。我使用 application / pdf 打开pdf,打开我在 application / pdf 的地方替换的其他文件? 请帮我。 谢谢。

import { FileOpener } from '@ionic-native/file-opener';

constructor(private fileOpener: FileOpener) { }

...

this.fileOpener.open('path/to/file.pdf', 'application/pdf')
  .then(() => console.log('File is opened'))
  .catch(e => console.log('Error openening file', e));

2 个答案:

答案 0 :(得分:6)

最后我得到了解决方案。

let fileExtn=file_name.split('.').reverse()[0];
let fileMIMEType=this.getMIMEtype(fileExtn);
         this.fileOpener.open("file:///storage/emulated/0/download/"+ file_name+"", fileMIMEType)
                .then(() => console.log('File is opened'))
                .catch(e => console.log('Error openening file', e));

为MIMEtype

制作其他功能
getMIMEtype(extn){
  let ext=extn.toLowerCase();
  let MIMETypes={
    'txt' :'text/plain',
    'docx':'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    'doc' : 'application/msword',
    'pdf' : 'application/pdf',
    'jpg' : 'image/jpeg',
    'bmp' : 'image/bmp',
    'png' : 'image/png',
    'xls' : 'application/vnd.ms-excel',
    'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    'rtf' : 'application/rtf',
    'ppt' : 'application/vnd.ms-powerpoint',
    'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
  }
  return MIMETypes[ext];
}

答案 1 :(得分:0)

好的,我在provider文件夹中制作了一个file-extension.ts文件,其中包含许多扩展名以及相应的标头。下面是它的代码(摘自Mozilla Docs,请参见here for full reference):

file-extension.ts:

export const FILE_EXTENSION_HEADERS = {
    'aac' : 'audio/aac',
    'abw' : 'application/x-abiword',
    'arc' : 'application/x-freearc',
    'avi' : 'video/x-msvideo',
    'azw' : 'application/vnd.amazon.ebook',
    'bin' : 'application/octet-stream',
    'bmp' : 'image/bmp',
    'bz' : 'application/x-bzip',
    'bz2' : 'application/x-bzip2',
    'csh' : 'application/x-csh',
    'css' : 'text/css',
    'csv' : 'text/csv',
    'doc' : 'application/msword',
    'docx' : 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    'eot' : 'application/vnd.ms-fontobject',
    'epub' : 'application/epub+zip',
    'gif' : 'image/gif',
    'htm' : 'text/html',
    'html' : 'text/html',
    'ico' : 'image/vnd.microsoft.icon',
    'ics' : 'text/calendar',
    'jar' : 'application/java-archive',
    'jpeg' : 'image/jpeg',
    'jpg' : 'image/jpeg',
    'js' : 'text/javascript',
    'json' : 'application/json',
    'jsonld' : 'application/ld+json',
    'mid' : 'audio/midi',
    'midi' : 'audio/midi',
    'mjs' : 'text/javascript',
    'mp3' : 'audio/mpeg',
    'mpeg' : 'video/mpeg',
    'mpkg' : 'application/vnd.apple.installer+xml',
    'odp' : 'application/vnd.oasis.opendocument.presentation',
    'ods' : 'application/vnd.oasis.opendocument.spreadsheet',
    'odt' : 'application/vnd.oasis.opendocument.text',
    'oga' : 'audio/ogg',
    'ogv' : 'video/ogg',
    'ogx' : 'application/ogg',
    'otf' : 'font/otf',
    'png' : 'image/png',
    'pdf' : 'application/pdf',
    'ppt' : 'application/vnd.ms-powerpoint',
    'pptx' : 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
    'rar' : 'application/x-rar-compressed',
    'rtf' : 'application/rtf',
    'sh' : 'application/x-sh',
    'svg' : 'image/svg+xml',
    'swf' : 'application/x-shockwave-flash',
    'tar' : 'application/x-tar',
    'tif' : 'image/tiff',
    'tiff' : 'image/tiff',
    'ttf' : 'font/ttf',
    'txt' : 'text/plain',
    'vsd' : 'application/vnd.visio',
    'wav' : 'audio/wav',
    'weba' : 'audio/webm',
    'webm' : 'video/webm',
    'webp' : 'image/webp',
    'woff' : 'font/woff',
    'woff2' : 'font/woff2',
    'xhtml' : 'application/xhtml+xml',
    'xls' : 'application/vnd.ms-excel',
    'xlsx' : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    'xml' : 'application/xml ',
    'xul' : 'application/vnd.mozilla.xul+xml',
    'zip' : 'application/zip',
    '3gp' : 'video/3gpp',
    '3g2' : 'video/3gpp2',
    '7z' : 'application/x-7z-compressed' 
};
  • 此后将其导入到我的提供程序文件中,并提出了一种方法来扩展此可用的应用程序。

APIService.ts:

import { FILE_EXTENSION_HEADERS } from './file_extension_headers';


@Injectable()
export class APIService{
  /* some other methods */

    fetchFileHeader(extension){
        extension = extension.toLowerCase();
        return FILE_EXTENSION_HEADERS[extension] !== undefined ? FILE_EXTENSION_HEADERS[extension] : 'text/plain';// default if no appropriate header is found
    }
}
  • 请注意,发送适当的标头仍可能无法打开文件。在这种情况下,您需要在移动设备上安装适当的应用程序才能打开此类文件。