H5调用相机&&相册并上传

一.如何选择文件

控件可以让用户选择文件,有以下几个属性需用到:
accept: 定义控件可选择的文件类型;
multiple: 定义是否可以选择多个文件,多个文件时其value值为第一个文件的虚拟路径;
capture: 指定capture属性调用默认相机,摄像,录音功能。

//Demo1:允许用户选择多张图片;ios中掉图片&&相机;android掉图片&&相机&&文件管理


//Demo2:默认打开照相机、摄像机、录音



1. accept

如果该元素的 type 属性的值是file,则该属性表明了服务器端可接受的文件类型;否则它将被忽略。该属性的值必须为一个逗号分割的列表,包含了多个唯一的内容类型声明:

  • 以 STOP 字符 (U+002E) 开始的文件扩展名。(例如:".jpg,.png,.doc")
  • 一个有效的 MIME 类型,但没有扩展名
  • audio/* 表示音频文件
  • video/* 表示视频文件
  • image/* 表示图片文件

accept兼容性如图,可以看到安卓浏览器目前还不支持这一属性,因此,需要用额外的js对文件类型进行限制。


H5调用相机&&相册并上传_第1张图片
image.png

2.multiple

This Boolean attribute indicates whether the user can enter more than one value. This attribute applies when the type attribute is set to email or file; otherwise it is ignored.

ps:安卓h5现在还不支持多选文件上传,这是一个坑╮(╯▽╰)╭

3.MIME 类型

 后缀名       MIME名称
*.3gpp  audio/3gpp, video/3gpp
*.ac3    audio/ac3
*.asf       allpication/vnd.ms-asf
*.au           audio/basic
*.css           text/css
*.csv           text/csv
*.doc    application/msword    
*.dot    application/msword    
*.dtd    application/xml-dtd    
*.dwg    image/vnd.dwg    
*.dxf      image/vnd.dxf
*.gif            image/gif    
*.htm    text/html    
*.html    text/html    
*.jp2            image/jp2    
*.jpe       image/jpeg
*.jpeg    image/jpeg
*.jpg          image/jpeg    
*.js       text/javascript, application/javascript    
*.json    application/json    
*.mp2    audio/mpeg, video/mpeg    
*.mp3    audio/mpeg    
*.mp4    audio/mp4, video/mp4    
*.mpeg    video/mpeg    
*.mpg    video/mpeg    
*.mpp    application/vnd.ms-project    
*.ogg    application/ogg, audio/ogg    
*.pdf    application/pdf    
*.png    image/png    
*.pot    application/vnd.ms-powerpoint    
*.pps    application/vnd.ms-powerpoint    
*.ppt    application/vnd.ms-powerpoint    
*.rtf            application/rtf, text/rtf    
*.svf           image/vnd.svf    
*.tif         image/tiff    
*.tiff       image/tiff    
*.txt           text/plain    
*.wdb    application/vnd.ms-works    
*.wps    application/vnd.ms-works    
*.xhtml    application/xhtml+xml    
*.xlc      application/vnd.ms-excel    
*.xlm    application/vnd.ms-excel    
*.xls           application/vnd.ms-excel    
*.xlt      application/vnd.ms-excel    
*.xlw      application/vnd.ms-excel    
*.xml    text/xml, application/xml    
*.zip            aplication/zip    
*.xlsx     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

二.使用FormData对象上传文件

1.事件触发:onchange事件

支持该事件的html标签为: