用户如何检查是否可以上传文件的最佳方法?

5

我想知道检查input type="field"字段是否对用户可用的最佳方法是什么?

至少iPhone和iPad不允许用户上传文件,但与其使用后端代码检查用户代理,我想听听您认为的最简解决方案是什么?

目的是检查文件上传是否可用,如果不可用,则将整个包含表单的div设置为display:none;。

这可以只使用CSS吗?jQuery?

我更喜欢一种不明确检查(iOS)而是进行更通用检查的解决方案。

提前感谢!


如果您不允许Opera Mini访问磁盘,它也会自动将文件上传输入字段转换为文本类型。我也想知道解决方案。 - Prasanth
1个回答

12

截至今天,最优雅的处理方法可能是使用Modernizr。其最新版本可以使用以下JS语句测试文件输入支持:

if(Modernizr.fileinput) {
    //file input available!
} else {
    //No file input :(
}

或者,如果您不想将Modernizr包含在项目中,则有一种简单的方法来测试它,只涉及3行代码:

var elem = document.createElement('input');
elem.type = 'file';
return !elem.disabled;

此篇SO回答所述。


1
很好,但是为了一个函数加载整个库感觉有点沉重。 - jonas
1
在Modernizr文档中找到的内容。 - Prasanth
2
在iOS 5+中似乎存在一个缺陷,这是由于iOS处理文件输入的方式 -- Modernizr测试通过,因为你可以在技术上上传图像,但不能上传一般的文件(没有文件系统访问)。因此,文件上传并没有完全被禁用。 - Shauna
1
您可以通过此处链接的测试用例进行验证:(https://github.com/Modernizr/Modernizr/issues/497#issuecomment-3933123) - Shauna
我今天早上检查了Modernizr的文件输入测试,但我认为在实际的2.8.3版本中不再有Modernizr.fileinput测试。 - pastorello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接