我使用jQuery和隐藏的iFrame创建了一个文件上传器。这适用于我需要在PC上使用的浏览器。然而,当在Android手机上测试时,我发现了以下问题。为了简单起见,我用一个简单的文件上传演示来测试这一点。
我使用安卓系统自带的本地互联网浏览器打开:http://encodable.com/uploaddemo/
我在浏览器中加载页面并选择"选择文件"。这将显示我手机上能够选择文件的应用程序。我安装了Astro文件管理器,所以这是我使用的。我有一些测试图片和测试文档。如果我选择了一张图片,一切都很好,我可以成功上传图片。如果我选择了一个文档,它似乎无法正确填写文件的位置(尽管它是在文本框中填写的),因为当我单击"开始上载"时,它会触发错误"请填写所需项目",就好像没有选择文件一样。
我能看到的唯一区别是用于图像和文档的路径:-content://media/external/images/media/11484/image.jpg-file:///mnt/sdcard/Test%20Files/pdf.pdf/
也许与许可有关?我也尝试过FileExpert和OfficeSuite来选择文档,但同样的问题仍然存在——是否有其他文件浏览器通过了不同的路径?
工作并使用"content://"的文件格式:'bmp'、'gif'、'jpg'、'jpeg'、'png'不起作用并使用"File:///"的文件格式:"txt"、"rtf"、"doc"、"docx"、"pdf"、"tif"answers"tiff"
任何建议,不胜感激。
问题与访问文件路径有关。通常在jQuery中,您会使用$(this).attr('value')
或$(this).val()
来获取文本框中的文件路径值。对于我的测试示例,使用效果良好的图像,您可以检索文件路径,但使用文档,您将一无所获。古怪的不知道为什么。因此,这意味着当通过表单发布数据时,不会为文档提交任何内容,也不会上传任何内容。