zoukankan      html  css  js  c++  java
  • 小程序图片上传七牛

    开发准备

    • 创建自己的存储空间,记录空间名(bucketname)、存储区域。

    上传图片

    一、需要后端根据ACCESS_KEY、SECRET_KEY 在服务器生成一个upToken给到前端

    二、前端部分

    • index.js
    • qiniuUploader文件地址:https://github.com/gpake/qiniu-wxapp-sdk/blob/master/demo/qiniu-demo/utils/qiniuUploader.js
    const qiniuUploader = require("../../utils/qiniuUploader");
    //index.js
    
    // 初始化七牛相关参数
    function initQiniu() {
      var options = {
        region: 'NCN', // 华北区
        uptokenURL: 'https://[yourserver.com]/api/uptoken', //请求后端uptoken的url地址
        //uptoken: 'xxx',  //你请求后端的uptoken,和上面一样的,uptokenURL不填就找uptoken,填一个就可以了(这里是字符串数据不是url了)
        domain: 'http://[yourBucketId].bkt.clouddn.com', //yourBucketId:这个去你域名配置那里要
        shouldUseQiniuFileName: false,
        //key: '' 
      };
      qiniuUploader.init(options);
    }
    
    //获取应用实例
    var app = getApp()
    Page({
      data: {
        imageObject: {}
      },
      //事件处理函数
      onLoad: function () {
        console.log('onLoad')
        var that = this;
      },
      didPressChooesImage: function() {
        var that = this;
        didPressChooesImage(that);
      },
        didCancelTask: function() {
          this.data.cancelTask()
        }
    });
    
    function didPressChooesImage(that) {
      initQiniu();
      // 微信 API 选文件
      wx.chooseImage({
          count: 1,
          success: function (res) {
            var filePath = res.tempFilePaths[0];
            // 交给七牛上传
            qiniuUploader.upload(filePath, (res) => {
              that.setData({
                'imageObject': res
              });
            }, (error) => {
              console.error('error: ' + JSON.stringify(error));
            },
            null,// 可以使用上述参数,或者使用 null 作为参数占位符
            (progress) => {
              console.log('上传进度', progress.progress)
                console.log('已经上传的数据长度', progress.totalBytesSent)
                console.log('预期需要上传的数据总长度', progress.totalBytesExpectedToSend)
            }, cancelTask => that.setData({cancelTask})
            );
          }
        })
    }
    上面代码初始化七牛更多相关参数
    • imageArray:准备上传的图片临时地址数组。
    • fileHead:自定义上传七牛文件名的头,为了区别上传文件,比如图片/视频/录音/其他,
    • imgName:自定义上传七牛文件名,前端处理嘛,我就简单的通过截取临时路径(filePath )的30-50位字符作为储存到七牛的文件名,即使你添加了两张相同的图片,小程序给你的临时路径也是不一样的,所以不会存在重名情况。
    • domain:下载资源时用到。如果设置,在上传后的success里返回的res.ImageURL字段,是一个带http的直接可以访问的文件地址,否则需要自己拼接。
    • key:最终储存到七牛的文件名,我这里的图片文件名=文件头(fileHead)+伪文件名(imgName)
    • uploadURL:上传到七牛的那个存储区域,上传区域和上传区域代码一定要对应上。
    • region:上传区域代码。
    • shouldUseQiniuFileName:表示是否由七牛来定义上传文件名,如果是 true,则文件 key 由 qiniu 服务器分配 (全局去重)。默认是 false,也就是我们自己来定义。如果key设置了,优先级最高
    • index.wxml
    <!--index.wxml-->
    <view class="main">
      <button bindtap='didPressChooesImage'>上传图片</button>
      <view class="image-container">
        <image class="image" src="{{imageObject.imageURL}}" mode="aspectFit"></image>
      </view>
    
      <view class="data">
        hash: <text>{{imageObject.hash}}
    
    </text>
        key: <text>{{imageObject.key}}
    
    </text>
        imageURL: <text>{{imageObject.imageURL}}</text>
      </view>
      <button bindtap='didCancelTask'>取消任务</button>
    </view>
    • index.css
    /**index.wxss**/
    text {
      word-break: break-all; 
    }
    
    .main {
      height: 100%;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: space-between;
      padding: 100rpx 0;
      box-sizing: border-box;
    }
    
    .image-container {
      background-color: #f2f2f2
    }
    
    .data {
      margin: 5px;
    }
    •  还有记得去小程序后台配置上传地址白名单(对应你选的存储区域,例如华北区,https://up-z1.qbox.me)

    下载社区SDK, 

  • 相关阅读:
    现在连Linux都搞不懂,当初我要是这么学习操作系统就好了!
    一时技痒,撸了个动态线程池,源码放Github了
    Java线程池ThreadPoolExecutor使用和分析(一)
    canch----1.对缓存的思考
    1.java 内存数据库--H2数据库使用指南
    What’s the difference between persist, save, merge and update? Which one should you use?
    primary key's generator in JPA entity
    STM32F103驱动M24256 256k存储芯片进行读写
    【Proteus+51单片机学习笔记】-51/52系列单片机简介
    【STM32项目笔记】STM32CubeMX+Keil+Proteus联合实现LED闪烁
  • 原文地址:https://www.cnblogs.com/tuspring/p/9869397.html
Copyright © 2011-2022 走看看