input file accept,上传文件、下载文件类型限制格式 ;常用MIME类型列表,支持 apk,exe,.woff,.ipa

5,514 阅读3分钟

上传文件input格式

上传文件浏览时只显示指定文件类型 xls、xlsx、csv(多种类型组合)

<input id="file_select" type="file"
 accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />

合法的指定类型: CSV files (.csv):

<input type="file" accept=".csv" />

Excel Files 2003-2007 (.xls):

<input type="file" accept="application/vnd.ms-excel" />

Excel Files 2010 (.xlsx):

<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />

Text Files (.txt):

<input type="file" accept="text/plain" />

Image Files (.png/.jpg/etc):

<input type="file" accept="image/*" />

HTML Files (.htm,.html):

<input type="file" accept="text/html" />

Audio Files (.mp3, .wav, etc):

<input type="file" accept="audio/*" />

PDF Files:

<input type="file" accept=".pdf" /> 

下载文件示例

/**
   * @desc 下载excel or pdf表格数据, http为使用HttpClient封装的请求Service
   * @param path - 请求path
   * @param params - 参数
   * @param action - 下载的是pdf还是excel
   */
  downloadFile(pathstring, params?: any, action = 'pdf'): Observable<any> {
    const token = LocalStorage.get('token')
    const contentType = action === 'pdf' ? 'application/pdf' : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
    let headers = new HttpHeaders().set('Accept', contentType)
    if (token) {
      headers = headers.set('Authorization', token)
    }
    const optionsany = {headers: headers, responseType'arraybuffer'observe'response'}
    return this.http.get(path, params, options)
      .do((resp: any) => {
        if (resp) {
          this.createATag(resp, action)
        }
      }, e => {
        console.log('e', e)
      })
  }
  
/**
   * @desc 创建a标签,下载excel or pdf
   * @param resp - request response
   * @param action - 下载的使pdf还是excel
   */
  private createATag(resp, action) {
    let fileName = 'Excel文件.xlsx',
      type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
    if (action === 'pdf') {
      fileName = 'PDF文件.pdf'
      type = 'application/pdf'
    }
    const text = resp.body
    const blob = new Blob([text], {type})
    const downloadLink = document.createElement('a')
    downloadLink.download = `${fileName}`
    downloadLink.href = window.URL.createObjectURL(blob)
    downloadLink.style.display = 'none'
    document.body.appendChild(downloadLink)
    downloadLink.click()
    document.body.removeChild(downloadLink)
  }
  // 调用
  this.downloadFile('export', {action:'download'}, 'pdf').subscribe()
  


MIME

MIME (Multipurpose Internet Mail Extensions) 多用途互联网邮件扩展,它设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

常用MIME

文件拓展名 MIME类型
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
*.css text/css
*.csv text/csv
.doc,.dot application/msword
*.gif image/gif
.htm,.html text/html
*.jpeg image/jpeg
*.jpg image/jpeg
*.js text/javascript, application/javascript
*.json application/json
*.pdf application/pdf
*.png image/png
*.txt text/plain
*.zip aplication/zip、application/x-compressed

不常用MIME

文件拓展名 MIME类型
.docm application/vnd.ms-word.document.macroEnabled.12
.dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template
.dotm application/vnd.ms-word.template.macroEnabled.12
.xlsm application/vnd.ms-excel.sheet.macroEnabled.12
.xltm application/vnd.ms-excel.template.macroEnabled.12
.xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12
.xlam application/vnd.ms-excel.addin.macroEnabled.12
.pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12
.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12
.potx application/vnd.openxmlformats-officedocument.presentationml.template
.potm application/vnd.ms-powerpoint.template.macroEnabled.12
.one .onetoc2 .onetmp .onepkg application/msonenote
*.3gpp audio/3gpp, video/3gpp
*.ac3 audio/ac3
*.asf allpication/vnd.ms-asf
*.au audio/basic
*.dtd
*.dwg image/vnd.dwg
*.dxf image/vnd.dxf
*.jp2 image/jp2
*.jpe image/jpeg
*.mp2 audio/mpeg, video/mpeg
*.mp3 audio/mpeg
*.mp4 audio/mp4, video/mp4
.mpeg,.mpg video/mpeg
*.mpp application/vnd.ms-project
*.ogg application/ogg, audio/ogg
.pot,.pps,*.ppt application/vnd.ms-powerpoint
*.rtf application/rtf, text/rtf
*.svf image/vnd.svf
*.tif image/tiff
*.tiff image/tiff
*.wdb application/vnd.ms-works
*.wps application/vnd.ms-works
*.xhtml application/xhtml+xml
.xlc,.xlm,.xls,.xlt,*.xlw application/vnd.ms-excel
*.xml text/xml, application/xml
*.apk application/vnd.android.package-archive
*.exe application/octet-stream
*.dmg application/octet-stream
*.woff application/x-font-woff 字体
.ipa application/iphone-package-archive

参考资料:www.cnblogs.com/afei9527/p/…

如果你觉得这篇文章有用,动动小手给我点个赞吧🍀