zoukankan      html  css  js  c++  java
  • 流文件下载方法

    重要知识点:

    FileReader.readAsText()

    readAsText 方法可以将 Blob 或者 File 对象转根据特殊的编码格式转化为内容(字符串形式)

     
    const download = (res, mime) => {
        const mimeList = {
          pdf: 'application/pdf',
          jpg: 'image/jpeg',
          jpeg: 'image/jpeg',
          gif: 'image/gif',
          png: 'image/png',
          doc: 'application/msword',
          docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
          ppt: 'application/vnd.ms-powerpoint',
          pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
          xls: 'application/vnd.ms-excel',
          xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
          zip: 'application/zip',
          rar: 'application/x-rar-compressed',
          bmp: 'image/bmp',
          tif: 'image/tiff',
        }
        if (res && res.type.indexOf('application/json') > -1) {
          const reader = new FileReader()
          reader.onload = () => {
            if (reader.result) {
              const result = JSON.parse(reader.result)
              Vue.prototype.$message.error(result.desc)
            }
          }
          reader.readAsText(res, 'utf-8')
          return
        }
        const blob = new Blob([res], { type: mimeList[mime] || 'application/vnd.ms-excel' })
        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
          window.navigator.msSaveOrOpenBlob(blob, downloadName)
        } else {
          const blobURL = window.URL.createObjectURL(blob)
          const tempLink = document.createElement('a')
          tempLink.style.display = 'none'
          tempLink.href = blobURL
          tempLink.setAttribute('download', downloadName)
          if (typeof tempLink.download === 'undefined') {
            tempLink.setAttribute('target', '_blank')
          }
          document.body.appendChild(tempLink)
          tempLink.click()
          document.body.removeChild(tempLink)
          setTimeout(() => {
            window.URL.revokeObjectURL(blobURL)
          }, 50)
        }
      }
  • 相关阅读:
    发一个使用 GridView 对数据小类进行分别汇总的例子
    C#根据当前时间确定日期范围(本周、本月、本季度、本年度)
    软件开发人员的作战手册
    C#服务常用继成函数说明
    ServiceController控制windows服务
    不做沙和尚
    C#多线程(二) 如何操纵一个线程转
    C#多线程(一) 多线程的相关概念
    如何为windows服务添加安装程序(转)
    用C#开发Windows服务、自动安装注册(转)
  • 原文地址:https://www.cnblogs.com/xcdl/p/15241232.html
Copyright © 2011-2022 走看看