使用 jquery-file-upload 插件实现图片上传功能

图片上传方式一:使用原生ajax formData 的方式上传

1. 实现效果

在这里插入图片描述

2. 实现步骤

2.1 引入需要的js三方库

jQuery File Upload 需要引入的包

  • jQuery库,建议jQuery 1.8以上版本
  • js/vendor/jquery.ui.widget.js : jQuery UI Widget
  • js/jquery.iframe-transport.js : 扩展iframe数据传输
  • js/jquery.fileupload.js : jQuery File Upload核心类
  • js/cors/jquery.xdr-transport.js 在IE下应载入此文件解决跨域问题(看需求,不是必须)
<script src="lib/jquery/jquery.js"></script>
<script src="lib/jquery-fileupload/jquery.ui.widget.js"></script>
<script src="lib/jquery-fileupload/jquery.iframe-transport.js"></script>
<script src="lib/jquery-fileupload/jquery.fileupload.js"></script>

2.2 HTML代码

  • name 属性的作用 插件会读取这个属性,传到服务器 以这个属性的值作为 文件的对象的键
  • data-url 就是后台上传图片接口的API
<div class="input-group ">
    <span class="input-group-addon" id="sizing-addon1">选择图片:</span>
    <input type="file" class="form-control select-img" name="pic1" data-url="/category/addSecondCategoryPic" >
</div>
<div class="input-group ">
    <img src="images/1.png" alt="" class="show-img">
</div>

2.3 js代码

获取了文件框的元素 调用fileupload函数即可 只要引入了插件 jquery对象上都会有这个函数就可以调用

$('.select-img').fileupload({
    success: function (data) {
    	// 图片预览操作
        $('.show-img').attr('src', data.picAddr);
    }
});

or 也可以使用官方推荐的 done 方法(done 比success更加强大 可以支持Promise提交)

$('.select-img').fileupload({
    done:function (e,data){
    	$('.show-img').attr('src', data.result.picAddr);
    } 
});

2.4 node.js 服务端代码(核心代码)

这里我用的 files.pic1 接收,所以客户端必须根据 pic1 传参数到服务端。

var file = files.pic1;
router.post("/addSecondCategoryPic", function (req, res) {
    //创建表单上传
    var form = new formidable.IncomingForm();
    //设置编辑
    form.encoding = 'utf-8';
    //设置文件存储路径
    form.uploadDir = "public/upload/brand";
    //保留后缀
    form.keepExtensions = true;
    //设置单文件大小限制 2m
    form.maxFieldsSize = 2 * 1024 * 1024;
    //form.maxFields = 1000;  设置所以文件的大小总和
    form.parse(req, function (err, fields, files) {
        var file = files.pic1;
        let picName = uuid.v1() + path.extname(file.name);
        fs.rename(file.path, 'public\\upload\\brand\\' + picName, function (err) {
            if (err) return res.send({ "error": 403, "message": "图片保存异常!" });
            res.send({ "picAddr": '/upload/brand/' + picName });
        });
    });
});
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。 特征: 1、多文件上传: 允许一次选择多个文件并同时上传。 2、拖放支持: 允许通过从桌面或文件管理器中将文件拖放到浏览器窗口中来上传文件。 3、上载进度条: 显示一个进度条,指示单个文件和所有组合上载的上载进度。 4、可取消的上传: 可以取消单个文件的上传以停止上传进度。 5、可恢复的上传: 可以使用支持Blob API的浏览器恢复中止的上传。 6、批量上传: 大型文件可以使用支持Blob API的浏览器以较小的块上传。 7、客户端图像调整大小: 可以使用支持所需JS API的浏览器在客户端上自动调整图像大小。 8、预览图像,音频和视频: 使用支持所需API的浏览器上载之前,可以显示图像,音频和视频文件的预览。 9、无需浏览器插件(例如Adobe Flash): 该实现基于HTML5和JavaScript等开放标准,并且不需要其他浏览器插件。 10、旧版浏览器的优美回退: 如果支持,则通过XMLHttpRequests上传文件,并使用iframe作为旧版浏览器的回退。 11、HTML文件上传表单后备: 通过使用标准HTML文件上传表单作为小部件元素,可以逐步增强功能。 12、跨站点文件上传: 支持使用跨站点XMLHttpRequest或iframe重定向将文件上传到其他域。 13、多个插件实例: 允许在同一网页上使用多个插件实例。 14、可自定义和可扩展: 提供API来设置各个选项并为各种上传事件定义回调方法。 15、分段和文件内容流的上传: 可以将文件作为标准的“分段/表单数据”或文件内容流(HTTP PUT文件上传)进行上传。 16、与任何服务器端应用程序平台兼容: 支持标准HTML表单文件上传的任何服务器端平台(PHP,Python,Ruby on Rails,Java,Node.js,Go等)均可使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范特西是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值