egg(70)--egg之前端图片批量上传插件webuploader

本文详细介绍了如何使用WebUploader插件进行图片上传的过程,包括前端页面的设置与交互,以及后端处理上传文件的实现方式。通过具体代码示例,展示了如何配置WebUploader,处理图片上传的成功与错误回调,以及后端如何接收并保存上传的图片。
摘要由CSDN通过智能技术生成

引入webuploader

    <link rel="stylesheet" type="text/css" href="/public/admin/webuploader/css/webuploader.css">
    <link rel="stylesheet" type="text/css" href="/public/admin/webuploader/css/diyUpload.css">
    <script type="text/javascript" src="/public/admin/webuploader/js/webuploader.html5only.min.js"></script>
    <script type="text/javascript" src="/public/admin/webuploader/js/diyUpload.js"></script>

前端

app/view/admin/goods/add.html
                        <div role="tabpanel" class="tab-pane" id="photo">
                            <div id="photoLib"  class="photoLib"></div>
                            <div id="photoList">
                            </div>
                        </div>
            $(function(){
                var photoStr = "";
                $("#photoLib").diyUpload({
                    url:'/admin/goods/goodsUploadPhoto',
                    success:function(response){
                        photoStr = '<input type="hidden" name="goods_image_list[]" value='+response.link+' />';
                        $("photoList").append(photoStr);
                    },
                    error:function(err){
                        console.log(err)
                    }
                })
            })

后台

router.js

router.post('/admin/goods/goodsUploadPhoto', controller.admin.goods.goodsUploadPhoto);

controller

app/controller/admin/goods.js
           async goodsUploadPhoto() {
            //实现图片上传
              let parts = this.ctx.multipart({ autoFields: true });
              let files = {};               
              let stream;
              while ((stream = await parts()) != null) {
                  if (!stream.filename) {          
                    break;
                  }       
                  let fieldname = stream.fieldname;  //file表单的名字
    
                  //上传图片的目录
                  let dir=await this.service.tools.getUploadFile(stream.filename);
                  let target = dir.uploadDir;
                  let writeStream = fs.createWriteStream(target);
    
                  await pump(stream, writeStream);  
    
                  files=Object.assign(files,{
                    [fieldname]:dir.saveDir    
                  })
    
                  //生成缩略图
                  this.service.tools.jimpImg(target);
                  
              }      
              //图片的地址转化成 {link: 'path/to/image.jpg'} 
    
              this.ctx.body={link: files.file};
          } 

效果

clipboard.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值