# 微信环境input无法上传文件

微信环境中使用H5的input file时只能选择手机的图片,不能选择文件上传

微信中使用input type=”file”做文件上传,accept属性没有限制为image,但是在微信浏览器内只能选择手机内存里的图片,不能文档等文件。经测试,在ios上只能选择图片,安卓机上有部分可以选择文档、部分只能选择图片,选择不上非图片格式的文件(默认灰色),但是在浏览器中是正常的,经过测试发现是”accept”属性的问题。

先举个简单的例子说一下: 以下这个写法在pc端是可以识别的,可以调起选择器,但在移动端是无法识别的。

<input type="file" accept=".jpg,.png,.gif"/>
1

移动端需要换成下面的写法就可以识别到了。

<input type="file" accept="image/jpeg,image/png,image/gif"/>
1

注:如果不限制图像的格式,可以写为:accept=”image/*”。

以下是移动端文件上传input=file,accept=””的一些属性(苹果,安卓):

.xls

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

.xlsx

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

.ppt

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

.pptx

<input type="file" accept="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
1

.doc

<input type="file" accept="application/msword" />
1

.docx

<input type="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
1

.pdf

<input type="file" accept="application/pdf" />
1

.csv

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

.png/.jpg/.jpeg/.etc

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

.txt

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

.htm/.html

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

.avi/.mpg/.mpeg/.mp4

<input type="file" accept="video/*" />
1

.mp3/.wav/.etc

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

.zip

<input type="file" accept="application/x-zip-compressed" />
1

以下是完整的方案:

<input type="file" accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf,.csv,image/*,text/plain,video/*,audio/*,application/x-zip-compressed" />
1