jQuery uploadify上传插件修改为ajax上传

网极科技11个月前代码笔记219

近期客户找到我们升级他们的老古董系统,这个系统创建于十几年前,使用了大量过时老旧的组件,需要更新替换,其中就包括了让很多程序员头疼的Flash组件。
本篇文章记录下如何将jQuery uploadify上传插件修改为ajax上传。
jQuery uploadify插件基于 Flash,这会导致它在不支持 Flash 的浏览器(例如较新版本的 Chrome 浏览器)上无法正常工作。

如果你希望上传功能在所有现代浏览器上均能正常使用,我建议你使用 HTML5 提供的文件 API 进行文件上传,而不是依赖 uploadify 插件。

这里给出一个如何使用 jQuery Ajax 与 HTML5 进行文件上传的基础例子:

<input type="file" id="fileInput"/>
<button type="button" id="uploadButton">上传文件</button>

以下是jQuery处理文件上传的代码:

$('#uploadButton').click(function(){
    var fileInput = $('#fileInput')[0];
    var file = fileInput.files[0];
    var formData = new FormData();
    formData.append('file', file);

    $.ajax({
        url: 'your-upload-url',   // 上传地址
        type: 'POST', 
        data: formData,
        processData: false,  // 不处理数据
        contentType: false   // 不设置内容类型
    }).done(function(res) {
       console.log(res);
    }).fail(function(res) {
        console.log("文件上传失败");
    });
});

这段代码基于 HTML5 的文件 API 实现文件上传,所有现代浏览器包括 Chrome 都支持 HTML5,所以不会存在兼容性问题。同时,对于不支持 JavaScript 和 Ajax 的古老或特殊浏览器,你应该提供退化处理,例如服务器端接收 POST 提交的上传。

我们可以先判断下是否支持flash

function hasFlash() {
    var plugin = navigator.plugins['Shockwave Flash'];
    if(plugin) {
        return true;
    }

    // 对于IE,需要使用ActiveXObject而不是Plugin
    try {
        var flash = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
        if(flash) {
            return true;
        }
    } catch (e) {}

    return false;
}

如有类似技术需求可联系QQ:706448591

相关文章

wordpress标题重复检测插件,发布文章时检测标题是否重复

wordpress标题重复检测插件,发布文章时检测标题是否重复

当我们的wordpress网站有越来越多的内容时,很难发现自己发布了重复的文章,所以写了个这个插件。 在发布文章时候,自动检测是否和已有文章标题重复,如果重复就拦截发布,存入草稿箱,并且页面...

为什么要用ServerLess架构部署企业官网

为什么要用ServerLess架构部署企业官网

企业官网作为企业的重要对外门户,承载的功能不然而喻。 企业官网经常遇到的问题被攻击很多非技术企业对于网站的运维并不擅长,更加没有专业的工程师进行运维,遇到攻击,手足无措,只能眼睁睁看着网站打...

全球所有国家和地区的ISO英文数字代码,国家名称首都、面积、人口数量、所属洲

全球所有国家和地区的ISO英文数字代码,国家名称首都、面积、人口数量、所属洲

数据不能保证100%准确,仅供您参考 ISO二字代码 ISO三字代码 ISO数字代码 国家/地区 首都/省会 面积/km² 人口 所属洲 AD AN...

简单实用NSIS制作windows安装程序美化版

简单实用NSIS制作windows安装程序美化版

在使用electron将网站项目打包成桌面客户端后,制作exe安装包就是必须要做的了,通过使用QT、NSIS等制作工具,最后整理出来了一套美化版NSIS安装包制作流程。最终成品软件:链接:https:...

php通过日K计算周K、月K、季K、年K

php通过日K计算周K、月K、季K、年K

实现思路: 首先读取股票日K线数据,存储到数组中。然后分别计算周K、季K、月K的数据,存储到新的数组中。最后将转换后的数据保存到文件中,以备后续使用。 下面是实现代码的示例:【精选】PHP将股...

【精选】PHP将股票日K线数据转换为月K线数据

【精选】PHP将股票日K线数据转换为月K线数据

通过日K数据计算月K数据,首先将日K的数据按月份分组,再将每个分组计算出开盘价收盘价最高价最低价和涨跌额等数据。 function convert_to_monthly_k($daily_data)...