解决jQuery uploadify在非IE浏览器上传问题

2 下载量 43 浏览量 更新于2024-09-03 收藏 90KB PDF 举报
"jQuery uploadify 是一个jQuery插件,用于实现异步文件上传,尤其在多文件上传和控制并发上传方面表现出色。然而,在非IE核心的浏览器如Firefox和Chrome中,由于这些浏览器不自动携带session信息和cookie,导致uploadify无法正常工作,因为这会影响服务器的安全验证。此问题主要由Flash技术的限制引起,因为在Flash进行文件上传时,非IE浏览器不会像IE那样自动附带本地cookie。" jQuery uploadify 插件的特性包括: 1. 支持单文件或批量文件上传,并可设置并发上传的最大数量。 2. 兼容多种服务器端语言,如PHP、.NET和Java,便于不同环境下的集成。 3. 可配置上传文件的类型和大小限制,确保安全和合规性。 4. 提供选择文件后立即上传或手动上传的选项,增加用户体验的灵活性。 5. 完善的事件处理机制,允许开发者自定义如onSelect、onCancel等事件的回调函数,方便扩展和定制。 6. 可通过参数和CSS样式调整界面外观,满足不同的设计需求。 在Firefox等非IE浏览器中遇到的问题: 当使用jQuery uploadify在Firefox或基于WebKit的浏览器(如Chrome、360浏览器)上传文件时,由于这些浏览器遵循更严格的同源策略和安全标准,它们不会将用户的session信息和cookie自动包含在Flash发起的文件上传请求中。这可能导致服务器无法识别用户的身份,从而引发认证失败,使得上传过程无法完成。 为了解决这个问题,有以下几种可能的解决方案: 1. 使用HTML5的File API:鉴于HTML5的File API支持跨域资源共享(CORS),开发者可以考虑放弃Flash,直接使用HTML5的FileReader和XMLHttpRequest Level 2来实现跨浏览器的文件上传。这样,session信息可以通过HTTP头部携带,确保上传请求的合法性。 2. 服务器端调整:在服务器端实现一种机制,允许通过其他方式传递session ID,例如在请求头中添加特定字段,或者使用POST参数传递session信息。 3. Flash Policy Server:配置一个Flash Policy Server,允许Flash跨域发送session信息。这种方法较为复杂,且可能涉及安全性问题。 4. 使用第三方库或服务:考虑使用如Resumable.js、plupload或其他现代的、跨浏览器的文件上传库,它们通常已经解决了这些问题。 jQuery uploadify在非IE浏览器下的问题主要与浏览器对Flash的支持和安全策略有关。开发者需要根据具体需求和环境选择合适的解决策略,以确保文件上传功能在所有主流浏览器上都能正常工作。