JS中使用base64编码上传下载文件

下载文件:使用FileSaver.js   https://github.com/eligrey/FileSaver.js/blob/master/README.md       手机端UC浏览器无法下载

import * as fileSave from 'file-saver';
  download(spath: string, swjm: string) {
    this.tableService.getwjnrws(spath).subscribe(data => {
      const content = data.swjnr;
      if (content) {
        console.log('下载' + content);
        const index = swjm.lastIndexOf('.');
        const fileType = swjm.substring(index);
        const mime = {
          '.323': 'text/h323',
          '.3gp': 'video/3gpp',
          '.aab': 'application/x-authoware-bin',
          '.aam': 'application/x-authoware-map',
          '.aas': 'application/x-authoware-seg',
          '.acx': 'application/internet-property-stream',
          '.ai': 'application/postscript',
          '.aif': 'audio/x-aiff',
          '.aifc': 'audio/x-aiff',
          '.aiff': 'audio/x-aiff',
          '.als': 'audio/X-Alpha5',
          '.amc': 'application/x-mpeg',
          '.ani': 'application/octet-stream',
          '.apk': 'application/vnd.android.package-archive',
          '.asc': 'text/plain',
          '.asd': 'application/astound',
          '.asf': 'video/x-ms-asf',
          '.asn': 'application/astound',
          '.asp': 'application/x-asap',
          '.asr': 'video/x-ms-asf',
          '.asx': 'video/x-ms-asf',
          '.au': 'audio/basic',
          '.avb': 'application/octet-stream',
          '.avi': 'video/x-msvideo',
          '.awb': 'audio/amr-wb',
          '.axs': 'application/olescript',
          '.bas': 'text/plain',
          '.bcpio': 'application/x-bcpio',
          '.bin ': 'application/octet-stream',
          '.bld': 'application/bld',
          '.bld2': 'application/bld2',
          '.bmp': 'image/bmp',
          '.bpk': 'application/octet-stream',
          '.bz2': 'application/x-bzip2',
          '.c': 'text/plain',
          '.cal': 'image/x-cals',
          '.cat': 'application/vnd.ms-pkiseccat',
          '.ccn': 'application/x-cnc',
          '.cco': 'application/x-cocoa',
          '.cdf': 'application/x-cdf',
          '.cer': 'application/x-x509-ca-cert',
          '.cgi': 'magnus-internal/cgi',
          '.chat': 'application/x-chat',
          '.class': 'application/octet-stream',
          '.clp': 'application/x-msclip',
          '.cmx': 'image/x-cmx',
          '.co': 'application/x-cult3d-object',
          '.cod': 'image/cis-cod',
          '.conf': 'text/plain',
          '.cpio': 'application/x-cpio',
          '.cpp': 'text/plain',
          '.cpt': 'application/mac-compactpro',
          '.crd': 'application/x-mscardfile',
          '.crl': 'application/pkix-crl',
          '.crt': 'application/x-x509-ca-cert',
          '.csh': 'application/x-csh',
          '.csm': 'chemical/x-csml',
          '.csml': 'chemical/x-csml',
          '.css': 'text/css',
          '.cur': 'application/octet-stream',
          '.dcm': 'x-lml/x-evm',
          '.dcr': 'application/x-director',
          '.dcx': 'image/x-dcx',
          '.der': 'application/x-x509-ca-cert',
          '.dhtml': 'text/html',
          '.dir': 'application/x-director',
          '.dll': 'application/x-msdownload',
          '.dmg': 'application/octet-stream',
          '.dms': 'application/octet-stream',
          '.doc': 'application/msword',
          '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
          '.dot': 'application/msword',
          '.dvi': 'application/x-dvi',
          '.dwf': 'drawing/x-dwf',
          '.dwg': 'application/x-autocad',
          '.dxf': 'application/x-autocad',
          '.dxr': 'application/x-director',
          '.ebk': 'application/x-expandedbook',
          '.emb': 'chemical/x-embl-dl-nucleotide',
          '.embl': 'chemical/x-embl-dl-nucleotide',
          '.eps': 'application/postscript',
          '.epub': 'application/epub+zip',
          '.eri': 'image/x-eri',
          '.es': 'audio/echospeech',
          '.esl': 'audio/echospeech',
          '.etc': 'application/x-earthtime',
          '.etx': 'text/x-setext',
          '.evm': 'x-lml/x-evm',
          '.evy': 'application/envoy',
          '.exe': 'application/octet-stream',
          '.fh4': 'image/x-freehand',
          '.fh5': 'image/x-freehand',
          '.fhc': 'image/x-freehand',
          '.fif': 'application/fractals',
          '.flr': 'x-world/x-vrml',
          '.flv': 'flv-application/octet-stream',
          '.fm': 'application/x-maker',
          '.fpx': 'image/x-fpx',
          '.fvi': 'video/isivideo',
          '.gau': 'chemical/x-gaussian-input',
          '.gca': 'application/x-gca-compressed',
          '.gdb': 'x-lml/x-gdb',
          '.gif': 'image/gif',
          '.gps': 'application/x-gps',
          '.gtar': 'application/x-gtar',
          '.gz': 'application/x-gzip',
          '.h': 'text/plain',
          '.hdf': 'application/x-hdf',
          '.hdm': 'text/x-hdml',
          '.hdml': 'text/x-hdml',
          '.hlp': 'application/winhlp',
          '.hqx': 'application/mac-binhex40',
          '.hta': 'application/hta',
          '.htc': 'text/x-component',
          '.htm': 'text/html',
          '.html': 'text/html',
          '.hts': 'text/html',
          '.htt': 'text/webviewhtml',
          '.ice': 'x-conference/x-cooltalk',
          '.ico': 'image/x-icon',
          '.ief': 'image/ief',
          '.ifm': 'image/gif',
          '.ifs': 'image/ifs',
          '.iii': 'application/x-iphone',
          '.imy': 'audio/melody',
          '.ins': 'application/x-internet-signup',
          '.ips': 'application/x-ipscript',
          '.ipx': 'application/x-ipix',
          '.isp': 'application/x-internet-signup',
          '.it': 'audio/x-mod',
          '.itz': 'audio/x-mod',
          '.ivr': 'i-world/i-vrml',
          '.j2k': 'image/j2k',
          '.jad': 'text/vnd.sun.j2me.app-descriptor',
          '.jam': 'application/x-jam',
          '.jar': 'application/java-archive',
          '.java': 'text/plain',
          '.jfif': 'image/pipeg',
          '.jnlp': 'application/x-java-jnlp-file',
          '.jpe': 'image/jpeg',
          '.jpeg': 'image/jpeg',
          '.jpg': 'image/jpeg',
          '.jpz': 'image/jpeg',
          '.js': 'application/x-javascript',
          '.jwc': 'application/jwc',
          '.kjx': 'application/x-kjx',
          '.lak': 'x-lml/x-lak',
          '.latex': 'application/x-latex',
          '.lcc': 'application/fastman',
          '.lcl': 'application/x-digitalloca',
          '.lcr': 'application/x-digitalloca',
          '.lgh': 'application/lgh',
          '.lha': 'application/octet-stream',
          '.lml': 'x-lml/x-lml',
          '.lmlpack': 'x-lml/x-lmlpack',
          '.log': 'text/plain',
          '.lsf': 'video/x-la-asf',
          '.lsx': 'video/x-la-asf',
          '.lzh': 'application/octet-stream',
          '.m13': 'application/x-msmediaview',
          '.m14': 'application/x-msmediaview',
          '.m15': 'audio/x-mod',
          '.m3u': 'audio/x-mpegurl',
          '.m3url': 'audio/x-mpegurl',
          '.m4a': 'audio/mp4a-latm',
          '.m4b': 'audio/mp4a-latm',
          '.m4p': 'audio/mp4a-latm',
          '.m4u': 'video/vnd.mpegurl',
          '.m4v': 'video/x-m4v',
          '.ma1': 'audio/ma1',
          '.ma2': 'audio/ma2',
          '.ma3': 'audio/ma3',
          '.ma5': 'audio/ma5',
          '.man': 'application/x-troff-man',
          '.map': 'magnus-internal/imagemap',
          '.mbd': 'application/mbedlet',
          '.mct': 'application/x-mascot',
          '.mdb': 'application/x-msaccess',
          '.mdz': 'audio/x-mod',
          '.me': 'application/x-troff-me',
          '.mel': 'text/x-vmel',
          '.mht': 'message/rfc822',
          '.mhtml': 'message/rfc822',
          '.mi': 'application/x-mif',
          '.mid': 'audio/mid',
          '.midi': 'audio/midi',
          '.mif': 'application/x-mif',
          '.mil': 'image/x-cals',
          '.mio': 'audio/x-mio',
          '.mmf': 'application/x-skt-lbs',
          '.mng': 'video/x-mng',
          '.mny': 'application/x-msmoney',
          '.moc': 'application/x-mocha',
          '.mocha': 'application/x-mocha',
          '.mod': 'audio/x-mod',
          '.mof': 'application/x-yumekara',
          '.mol': 'chemical/x-mdl-molfile',
          '.mop': 'chemical/x-mopac-input',
          '.mov': 'video/quicktime',
          '.movie': 'video/x-sgi-movie',
          '.mp2': 'video/mpeg',
          '.mp3': 'audio/mpeg',
          '.mp4': 'video/mp4',
          '.mpa': 'video/mpeg',
          '.mpc': 'application/vnd.mpohun.certificate',
          '.mpe': 'video/mpeg',
          '.mpeg': 'video/mpeg',
          '.mpg': 'video/mpeg',
          '.mpg4': 'video/mp4',
          '.mpga': 'audio/mpeg',
          '.mpn': 'application/vnd.mophun.application',
          '.mpp': 'application/vnd.ms-project',
          '.mps': 'application/x-mapserver',
          '.mpv2': 'video/mpeg',
          '.mrl': 'text/x-mrml',
          '.mrm': 'application/x-mrm',
          '.ms': 'application/x-troff-ms',
          '.msg': 'application/vnd.ms-outlook',
          '.mts': 'application/metastream',
          '.mtx': 'application/metastream',
          '.mtz': 'application/metastream',
          '.mvb': 'application/x-msmediaview',
          '.mzv': 'application/metastream',
          '.nar': 'application/zip',
          '.nbmp': 'image/nbmp',
          '.nc': 'application/x-netcdf',
          '.ndb': 'x-lml/x-ndb',
          '.ndwn': 'application/ndwn',
          '.nif': 'application/x-nif',
          '.nmz': 'application/x-scream',
          '.nokia-op-logo': 'image/vnd.nok-oplogo-color',
          '.npx': 'application/x-netfpx',
          '.nsnd': 'audio/nsnd',
          '.nva': 'application/x-neva1',
          '.nws': 'message/rfc822',
          '.oda': 'application/oda',
          '.ogg': 'audio/ogg',
          '.oom': 'application/x-AtlasMate-Plugin',
          '.p10': 'application/pkcs10',
          '.p12': 'application/x-pkcs12',
          '.p7b': 'application/x-pkcs7-certificates',
          '.p7c': 'application/x-pkcs7-mime',
          '.p7m': 'application/x-pkcs7-mime',
          '.p7r': 'application/x-pkcs7-certreqresp',
          '.p7s': 'application/x-pkcs7-signature',
          '.pac': 'audio/x-pac',
          '.pae': 'audio/x-epac',
          '.pan': 'application/x-pan',
          '.pbm': 'image/x-portable-bitmap',
          '.pcx': 'image/x-pcx',
          '.pda': 'image/x-pda',
          '.pdb': 'chemical/x-pdb',
          '.pdf': 'application/pdf',
          '.pfr': 'application/font-tdpfr',
          '.pfx': 'application/x-pkcs12',
          '.pgm': 'image/x-portable-graymap',
          '.pict': 'image/x-pict',
          '.pko': 'application/ynd.ms-pkipko',
          '.pm': 'application/x-perl',
          '.pma': 'application/x-perfmon',
          '.pmc': 'application/x-perfmon',
          '.pmd': 'application/x-pmd',
          '.pml': 'application/x-perfmon',
          '.pmr': 'application/x-perfmon',
          '.pmw': 'application/x-perfmon',
          '.png': 'image/png',
          '.pnm': 'image/x-portable-anymap',
          '.pnz': 'image/png',
          '.pot,': 'application/vnd.ms-powerpoint',
          '.ppm': 'image/x-portable-pixmap',
          '.pps': 'application/vnd.ms-powerpoint',
          '.ppt': 'application/vnd.ms-powerpoint',
          '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
          '.pqf': 'application/x-cprplayer',
          '.pqi': 'application/cprplayer',
          '.prc': 'application/x-prc',
          '.prf': 'application/pics-rules',
          '.prop': 'text/plain',
          '.proxy': 'application/x-ns-proxy-autoconfig',
          '.ps': 'application/postscript',
          '.ptlk': 'application/listenup',
          '.pub': 'application/x-mspublisher',
          '.pvx': 'video/x-pv-pvx',
          '.qcp': 'audio/vnd.qcelp',
          '.qt': 'video/quicktime',
          '.qti': 'image/x-quicktime',
          '.qtif': 'image/x-quicktime',
          '.r3t': 'text/vnd.rn-realtext3d',
          '.ra': 'audio/x-pn-realaudio',
          '.ram': 'audio/x-pn-realaudio',
          '.rar': 'application/octet-stream',
          '.ras': 'image/x-cmu-raster',
          '.rc': 'text/plain',
          '.rdf': 'application/rdf+xml',
          '.rf': 'image/vnd.rn-realflash',
          '.rgb': 'image/x-rgb',
          '.rlf': 'application/x-richlink',
          '.rm': 'audio/x-pn-realaudio',
          '.rmf': 'audio/x-rmf',
          '.rmi': 'audio/mid',
          '.rmm': 'audio/x-pn-realaudio',
          '.rmvb': 'audio/x-pn-realaudio',
          '.rnx': 'application/vnd.rn-realplayer',
          '.roff': 'application/x-troff',
          '.rp': 'image/vnd.rn-realpix',
          '.rpm': 'audio/x-pn-realaudio-plugin',
          '.rt': 'text/vnd.rn-realtext',
          '.rte': 'x-lml/x-gps',
          '.rtf': 'application/rtf',
          '.rtg': 'application/metastream',
          '.rtx': 'text/richtext',
          '.rv': 'video/vnd.rn-realvideo',
          '.rwc': 'application/x-rogerwilco',
          '.s3m': 'audio/x-mod',
          '.s3z': 'audio/x-mod',
          '.sca': 'application/x-supercard',
          '.scd': 'application/x-msschedule',
          '.sct': 'text/scriptlet',
          '.sdf': 'application/e-score',
          '.sea': 'application/x-stuffit',
          '.setpay': 'application/set-payment-initiation',
          '.setreg': 'application/set-registration-initiation',
          '.sgm': 'text/x-sgml',
          '.sgml': 'text/x-sgml',
          '.sh': 'application/x-sh',
          '.shar': 'application/x-shar',
          '.shtml': 'magnus-internal/parsed-html',
          '.shw': 'application/presentations',
          '.si6': 'image/si6',
          '.si7': 'image/vnd.stiwap.sis',
          '.si9': 'image/vnd.lgtwap.sis',
          '.sis': 'application/vnd.symbian.install',
          '.sit': 'application/x-stuffit',
          '.skd': 'application/x-Koan',
          '.skm': 'application/x-Koan',
          '.skp': 'application/x-Koan',
          '.skt': 'application/x-Koan',
          '.slc': 'application/x-salsa',
          '.smd': 'audio/x-smd',
          '.smi': 'application/smil',
          '.smil': 'application/smil',
          '.smp': 'application/studiom',
          '.smz': 'audio/x-smd',
          '.snd': 'audio/basic',
          '.spc': 'application/x-pkcs7-certificates',
          '.spl': 'application/futuresplash',
          '.spr': 'application/x-sprite',
          '.sprite': 'application/x-sprite',
          '.sdp': 'application/sdp',
          '.spt': 'application/x-spt',
          '.src': 'application/x-wais-source',
          '.sst': 'application/vnd.ms-pkicertstore',
          '.stk': 'application/hyperstudio',
          '.stl': 'application/vnd.ms-pkistl',
          '.stm': 'text/html',
          '.svg': 'image/svg+xml',
          '.sv4cpio': 'application/x-sv4cpio',
          '.sv4crc': 'application/x-sv4crc',
          '.svf': 'image/vnd',
          '.svh': 'image/svh',
          '.svr': 'x-world/x-svr',
          '.swf': 'application/x-shockwave-flash',
          '.swfl': 'application/x-shockwave-flash',
          '.t': 'application/x-troff',
          '.tad': 'application/octet-stream',
          '.talk': 'text/x-speech',
          '.tar': 'application/x-tar',
          '.taz': 'application/x-tar',
          '.tbp': 'application/x-timbuktu',
          '.tbt': 'application/x-timbuktu',
          '.tcl': 'application/x-tcl',
          '.tex': 'application/x-tex',
          '.texi': 'application/x-texinfo',
          '.texinfo': 'application/x-texinfo',
          '.tgz': 'application/x-compressed',
          '.thm': 'application/vnd.eri.thm',
          '.tif': 'image/tiff',
          '.tiff': 'image/tiff',
          '.tki': 'application/x-tkined',
          '.tkined': 'application/x-tkined',
          '.toc': 'application/toc',
          '.toy': 'image/toy',
          '.tr': 'application/x-troff',
          '.trk': 'x-lml/x-gps',
          '.trm': 'application/x-msterminal',
          '.tsi': 'audio/tsplayer',
          '.tsp': 'application/dsptype',
          '.tsv': 'text/tab-separated-values',
          '.ttf': 'application/octet-stream',
          '.ttz': 'application/t-time',
          '.txt': 'text/plain',
          '.uls': 'text/iuls',
          '.ult': 'audio/x-mod',
          '.ustar': 'application/x-ustar',
          '.uu': 'application/x-uuencode',
          '.uue': 'application/x-uuencode',
          '.vcd': 'application/x-cdlink',
          '.vcf': 'text/x-vcard',
          '.vdo': 'video/vdo',
          '.vib': 'audio/vib',
          '.viv': 'video/vivo',
          '.vivo': 'video/vivo',
          '.vmd': 'application/vocaltec-media-desc',
          '.vmf': 'application/vocaltec-media-file',
          '.vmi': 'application/x-dreamcast-vms-info',
          '.vms': 'application/x-dreamcast-vms',
          '.vox': 'audio/voxware',
          '.vqe': 'audio/x-twinvq-plugin',
          '.vqf': 'audio/x-twinvq',
          '.vql': 'audio/x-twinvq',
          '.vre': 'x-world/x-vream',
          '.vrml': 'x-world/x-vrml',
          '.vrt': 'x-world/x-vrt',
          '.vrw': 'x-world/x-vream',
          '.vts': 'workbook/formulaone',
          '.wav': 'audio/x-wav',
          '.wax': 'audio/x-ms-wax',
          '.wbmp': 'image/vnd.wap.wbmp',
          '.wcm': 'application/vnd.ms-works',
          '.wdb': 'application/vnd.ms-works',
          '.web': 'application/vnd.xara',
          '.wi': 'image/wavelet',
          '.wis': 'application/x-InstallShield',
          '.wks': 'application/vnd.ms-works',
          '.wm': 'video/x-ms-wm',
          '.wma': 'audio/x-ms-wma',
          '.wmd': 'application/x-ms-wmd',
          '.wmf': 'application/x-msmetafile',
          '.wml': 'text/vnd.wap.wml',
          '.wmlc': 'application/vnd.wap.wmlc',
          '.wmls': 'text/vnd.wap.wmlscript',
          '.wmlsc': 'application/vnd.wap.wmlscriptc',
          '.wmlscript': 'text/vnd.wap.wmlscript',
          '.wmv': 'audio/x-ms-wmv',
          '.wmx': 'video/x-ms-wmx',
          '.wmz': 'application/x-ms-wmz',
          '.wpng': 'image/x-up-wpng',
          '.wps': 'application/vnd.ms-works',
          '.wpt': 'x-lml/x-gps',
          '.wri': 'application/x-mswrite',
          '.wrl': 'x-world/x-vrml',
          '.wrz': 'x-world/x-vrml',
          '.ws': 'text/vnd.wap.wmlscript',
          '.wsc': 'application/vnd.wap.wmlscriptc',
          '.wv': 'video/wavelet',
          '.wvx': 'video/x-ms-wvx',
          '.wxl': 'application/x-wxl',
          '.x-gzip': 'application/x-gzip',
          '.xaf': 'x-world/x-vrml',
          '.xar': 'application/vnd.xara',
          '.xbm': 'image/x-xbitmap',
          '.xdm': 'application/x-xdma',
          '.xdma': 'application/x-xdma',
          '.xdw': 'application/vnd.fujixerox.docuworks',
          '.xht': 'application/xhtml+xml',
          '.xhtm': 'application/xhtml+xml',
          '.xhtml': 'application/xhtml+xml',
          '.xla': 'application/vnd.ms-excel',
          '.xlc': 'application/vnd.ms-excel',
          '.xll': 'application/x-excel',
          '.xlm': 'application/vnd.ms-excel',
          '.xls': 'application/vnd.ms-excel',
          '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
          '.xlt': 'application/vnd.ms-excel',
          '.xlw': 'application/vnd.ms-excel',
          '.xm': 'audio/x-mod',
          '.xml': 'application/xml',
          '.xmz': 'audio/x-mod',
          '.xof': 'x-world/x-vrml',
          '.xpi': 'application/x-xpinstall',
          '.xpm': 'image/x-xpixmap',
          '.xsit': 'text/xml',
          '.xsl': 'text/xml',
          '.xul': 'text/xul',
          '.xwd': 'image/x-xwindowdump',
          '.xyz': 'chemical/x-pdb',
          '.yz1': 'application/x-yz1',
          '.z': 'application/x-compress',
          '.zac': 'application/x-zaurus-zac',
          '.zip': 'application/zip',
          '.json': 'application/json'
        };

        if (fileType in mime) {

          const myFile = this.createFile(content, mime[fileType]);

          // const file = new File([myFile], swjm, { type: mime[fileType] });

          fileSave.saveAs(myFile, swjm);

        }

      }
    });

  }

  createFile(data, type) {
    const bytes = window.atob(data);
    let n = bytes.length;
    const u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bytes.charCodeAt(n); // 返回在指定的位置的字符的 Unicode 编码
    }
    return new Blob([u8arr], { type: type });
  }

  上传文件:

 upload(files: FileList, service: HiswsService) {
   function getDateStr(d:Date){ ......
//格式化日期代码省略…… return `${year}/${mouthStr}/${dayStr} ${hourStr}:${minuteStr}:${secondStr}`; } if (files.length) { const file = files[0]; // const fileType = file.type; const reader = new FileReader(); // new一个FileReader实例 reader.onload = function (e) { const t: any = e.target; console.log('上传:' + t.result); let wjnr = ''; const d = t.result.split('base64,')[1]; if (d) { wjnr = d; } else { wjnr = t.result; } const today = new Date(); const sygid = sessionStorage.getItem('currentUser'); const data = new FileBean('', file.name, '', `${file.size}`, '1', file.name, getDateStr(today), wjnr, sygid); service.wjsave(data).subscribe( s => { console.log('wjsave:' + s); if (s.state) { alert('上传文件成功!'); } else { alert('上传失败:' + s.errorMsg); } } ); }; reader.readAsDataURL(file); // 返回一个基于Base64编码的data-uri对象 } }

 service所做的事情就是发get 或 post请求给后端

return this.http.post<SaveOutputBean>(surl, fileBean, httpOptions)  //上传

return this.http.get<FileContent>(lurl)  //下载

  

猜你喜欢

转载自www.cnblogs.com/yongwangzhiqian/p/9721775.html