经过数周的调整后,我终于放弃了.我无法在safari上修复我的多文件上传,这真的让我感到困扰,因为我的代码在其他浏览器上运行得非常完美,除了在safari上.然后我刚刚发现它不是我的代码有问题.它是一个Safari bug.Safari 5.1.+无法读取html5多重属性(或类似的东西).因此用户无法使用多重上传功能,但可以正确上传单个文件.
几个讨论这个问题的链接:
https://github.com/moxiecode/plupload/issues/363
似乎这个bug已经存在很长一段时间了.所以我想知道是否有一些可用的解决方法,你们当中有些人可能知道这一点?因为我找不到任何东西.我发现唯一可用的选项是不为Safari 5.1.+用户使用多个属性.你们有更好的想法吗?
UPDATE
Safari 5.1.7是Apple为Windows操作系统制作的最新版本.他们没有继续构建适用于Windows的Safari的当前版本.为我找到这个bug的修复程序是没有必要的,因为Real Safari用户已经更新到最新版本的浏览器(没有事实),只是为那些仍在使用这个过时版本的用户单独上传,而不是牺牲现代版本您的应用程序的功能.
这是一个古老的问题,但是......黑客类型的解决方法如下。
只需删除Safari的多个属性,将其变成MSIE<=9小兄弟(非XHR)即可。
其余浏览器不会受到影响。
当 Safari 最终解决问题时,您所要做的就是删除此 hack::code 并返回到标准输入代码。
这是标准输入示例:
<input class="fileupload-input" type="file" name="files[]" multiple />
jQuery 解决方案:
只需将其放置在页面上有文件输入标记的位置即可。
您可以在这里阅读更多内容:如何检测 Safari、Chrome、IE、Firefox 和 Opera 浏览器?
$(文档).ready(函数() {
if (Object.prototype.toString.call(window.HTMLElement).indexOf('构造函数')>0);
$('.fileupload-input').removeAttr("多个");
});
PHP解决方案
你需要一些代码来识别浏览器我使用了一个类,我在github(麻省理工学院)得到了一个类,在这里获取它: https: //github.com/gavroche/php-browser
$files = '<input class="fileupload-input" type="file" name="files[]" multiple />';
if (Browser::getBrowser() === Browser::SAFARI) {
$files = '<input class="fileupload-input" type="file" name="files[]" />';
}
回显$文件
就这些。
| 归档时间: |
|
| 查看次数: |
8267 次 |
| 最近记录: |