解决 jQuery uploadify 在非 IE 核心浏览器下无法上传,可以通过以下步骤实现:
1. 原因
非 IE 核心浏览器(如 Chrome、Firefox 等)不允许跨域上传文件,而 uploadify 默认使用了 flash 进行文件上传,flash 模式下不能跨域上传,导致文件上传失败。
2. 解决方案
可以通过以下两种方式来解决这个问题:
2.1 使用 HTML5 方式上传
HTML5 支持在同域名下跨文件上传,因此可以使用 HTML5 方式替代 flash 方式来上传文件。可以通过设置 uploadify 的 uploader
属性来实现。
示例代码:
$('#file').uploadify({
'swf': 'uploadify.swf',
'uploader': '/upload', // 修改这里为上传接口地址
'fileTypeExts': '*.jpg;*.png',
'fileSizeLimit': '2MB',
'multi': true,
'onUploadSuccess': function(file, data, response) {
console.log('上传成功');
},
'onUploadError': function(file, errorCode, errorMsg, errorString) {
console.log('上传失败,错误码:' + errorCode + ',错误信息:' + errorMsg);
},
});
2.2 设置 crossdomain.xml 文件
将 crossdomain.xml 文件放到上传文件的服务器根目录下,内容如下:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
示例代码:
$('#file').uploadify({
'swf': 'uploadify.swf',
'uploader': '/upload', // 修改这里为上传接口地址
'fileTypeExts': '*.jpg;*.png',
'fileSizeLimit': '2MB',
'multi': true,
'formData': { 'timestamp': '', 'token': '' },
'onUploadSuccess': function(file, data, response) {
console.log('上传成功');
},
'onUploadError': function(file, errorCode, errorMsg, errorString) {
console.log('上传失败,错误码:' + errorCode + ',错误信息:' + errorMsg);
},
});
总结
在非 IE 核心浏览器下,uploadify 无法跨域上传文件,可以通过使用 HTML5 方式上传文件或设置 crossdomain.xml 文件来解决这个问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决jQuery uploadify在非IE核心浏览器下无法上传 - Python技术站