ajaxfileupload.js的优点,为什么大家都用它?

吉云

今天跟大家唠唠我最近折腾的这个 `*` 插件,一开始我是拒绝的,这玩意儿听着就老旧,但没办法,项目需要,硬着头皮上。

事情是这样的,有个老项目要加个上传功能,后端只支持这种古老的提交方式,简直!一开始想用 `axios` 来着,多方便,配置一下就能跨域,还能监控上传进度,可惜后端大哥一句“不支持”,直接给我怼回来。

没办法,只能去找 `*` 这种“远古神器”。这玩意儿,优点确实轻量级,就依赖 `jQuery`,引入就能用。但是坑也多,尤其是在现代浏览器上,各种兼容性问题,简直让人头大。

ajaxfileupload.js的优点,为什么大家都用它?

下载 `*` 文件,这个网上随便搜一个就行,不过要注意版本,有些版本可能存在一些 bug。我一开始随便找个版本,结果在 Chrome 上死活不兼容,后来换个版本才

然后,在 HTML 页面引入 `jQuery` 和 `*`。注意顺序,先引入 `jQuery`,再引入 `*`,不然会报错。

接下来就是写 JavaScript 代码。这部分是最麻烦的,因为 `*` 的用法比较老套,要手动创建一个隐藏的 `form` 和 `iframe`,然后用 JS 去提交,获取返回值。

我的代码大概是这样的:

  • 监听上传按钮的点击事件。
  • ajaxfileupload.js的优点,为什么大家都用它?

  • 然后,获取要上传的文件。
  • 调用 `$.ajaxFileUpload()` 方法,传入各种参数。
  • 在 `success` 回调函数中处理上传成功后的逻辑。
  • 在 `error` 回调函数中处理上传失败后的逻辑。

这个 `$.ajaxFileUpload()` 方法的参数贼多,我常用的有:

ajaxfileupload.js的优点,为什么大家都用它?

  • `url`: 上传的 URL 地址。
  • `secureuri`: 是否使用安全连接,一般设置为 `false`。
  • `fileElementId`: 文件上传控件的 ID。
  • `dataType`: 返回的数据类型,一般设置为 `json`。
  • `success`: 上传成功后的回调函数。
  • ajaxfileupload.js的优点,为什么大家都用它?

  • `error`: 上传失败后的回调函数。

这里有个坑,就是 `fileElementId` 这个参数,必须是文件上传控件的 ID,而且这个控件必须在 `form` 表单中,不然会报错。我一开始就没注意到这一点,结果调试半天。

还有就是后端返回的数据格式,必须是 `json` 格式,而且要包含 `success` 和 `message` 字段,不然 `*` 无法正确解析。

我搞好久才把这个上传功能搞定,期间各种踩坑,各种查资料,简直是一部血泪史。不过还是成功,也算是对得起自己。

`*` 确实是一个比较老旧的插件,但是对于一些老项目来说,还是一个不错的选择。不过在使用的时候要注意各种兼容性问题,以及后端返回的数据格式,不然会遇到很多坑。

ajaxfileupload.js的优点,为什么大家都用它?

的强烈建议大家尽量使用 `axios` 来实现文件上传,真的方便太多!除非像我一样,被后端大哥强制要求,不然千万别碰 `*`。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]