困扰了一夜 的node+vue单图上传到七牛云,笔记一下...

1 篇文章 0 订阅
1 篇文章 0 订阅

vue页面代码

<template>
  <div id="MyAdd">
    <input type="file" name="image" accept="image/*" @change="uploadImg($event)">
    <img :src="list" width="100px" height="100px">
    {{list}}
  </div>
</template>

<script>
const Base_Img = "http://pqg87dxpt.bkt.clouddn.com/"
import { putQiniu } from "../../API/index.js";

export default {
  name: "MyAdd",
  data() {
    return {
      list: ""
     };
  },
  methods: {
    // 这是方法,ajax请求封装在了../../API/index.js中
    async uploadImg(event) {
        var file = event.target.files[0];
        console.log(event.target.files)
         var Data = new FormData();
           Data.append("mypic", file);
           console.log(Data)
      let result = await putQiniu(Data);
      this.list = Base_Img+result.ret.key;   
  }

node服务端代码

var config = new qiniu.conf.Config();
// 空间对应的机房
// config.zone = qiniu.zone.Zone_z0;
//两个对应的key在七牛上自己的账号里可以找到
qiniu.conf.ACCESS_KEY = 'xxxxxx'
qiniu.conf.SECRET_KEY = 'xxxxxx'
var accessKey = qiniu.conf.ACCESS_KEY;
var secretKey = qiniu.conf.SECRET_KEY;
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);


// 文件上传
router.post('/qiniu', function (req, res, next) {
//七牛上自己的存储空间名
  let bucket = 'cate',
    key = '',
    form = formidable.IncomingForm(),
    token, putPolicy;

  console.log(req.body)
  console.log("----------------")
  console.log(req.query)
  console.log("----------------")
  console.log(req.params)
  // 备份图片到images目录下
  // form.uploadDir = path.join(__dirname, '../', 'public/images');
  form.keepExtensions = true
  
  form.parse(req, function (err, fields, files) {
    if (err) {
      console.log(err);
    }
    // key-七牛中保存和返回的图片名称;files.mypic.name-上传的图片名称(有可能会重复)
    // key = files.mypic.name;
    key = files.mypic.path.split(path.sep).pop();
    console.log(key)
    var options = {
      scope: bucket + ':' + key,
    };
    putPolicy = new qiniu.rs.PutPolicy(options);
    token = putPolicy.uploadToken(mac);
    console.log('token', token)
    let extra = new qiniu.form_up.PutExtra();
    var formUploader = new qiniu.form_up.FormUploader(config);
      formUploader.putFile(token, key, files.mypic.path, extra, function (err, ret) {
      console.log("11111111111111")
      if (err) {
        console.log(err)
      }
      console.log('ret', ret);
      res.json({
        code:"200",
        token: token,
        ret: ret,
        files: files,
        fields: fields
      })
    })
  })

})

运行效果图

服务端

客户端

功能代码就是这些,样式再做修改就好了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值