七牛云存储开发图片上传功能-阿里云开发者社区

开发者社区> 烟海之蓝> 正文

七牛云存储开发图片上传功能

简介: 1、注册登录七牛云,并实名认证,对象存储控制台,新增bucket存储空间 2、nodejs服务器安装npm install qiniu --save const common = require('.
+关注继续查看

1、注册登录七牛云,并实名认证,对象存储控制台,新增bucket存储空间

2、nodejs服务器安装npm install qiniu --save

const common = require('../../lib/common.js')
const qiniu = require('qiniu')
let niu = {}

niu.errorHandler = common.errorHandler

niu.createToken = function(req, res, next) {
    let result = req.body.result
    var accessKey = common.config.qiniuAccessKey
    var secretKey = common.config.qiniuSecretKey
    var mac = new qiniu.auth.digest.Mac(accessKey, secretKey)

    var options = {
        scope: 'images', // 创建好的bucket
        expires: 3600 // 过期时间 单位s
    }

    var putPolicy = new qiniu.rs.PutPolicy(options)
    var uploadToken=putPolicy.uploadToken(mac)
    result.qiniu = uploadToken
    return common.send(req, res, {status: 0, msg: '登录成功!', data: result})
}
module.exports = niu

通过以上方法生产客户端上传图片需要用的token

3、客户端安装npm install qiniu-js --save

                     confirm() {
                    let formData = new FormData(this.$refs.form.$el)
                    let file = formData.get('file')
                    let key = file.name
                    let putExtra = {
                        mimeType: ['image/png', 'image/jpeg'] || null // 前端校验图片格式
                    }
                    console.log(file)
                    var observable = qiniu.upload(file, key, this.token, putExtra)
                    var observer = {
                        next(res) {
                            console.log(res)
                        },
                        error(err) {
                            console.log(err)
                        }, 
                        complete(res) {
                            console.log(res)
                        }
                    }
                    var subscription = observable.subscribe(observer) // 上传开始
                    console.log(subscription)
                    // // or
                    // var subscription = observable.subscribe(next, error, complete) // 这样传参形式也可以
                    // subscription.unsubscribe() // 上传取消
                }
    
observer的参数注释
    next: 接收上传进度信息,res 参数是一个带有 total 字段的 object,包含loaded、total、percent三个属性,提供上传进度信息。

total.loaded: number,已上传大小,单位为字节。
total.total: number,本次上传的总量控制信息,单位为字节,注意这里的 total 跟文件大小并不一致。
total.percent: number,当前上传进度,范围:0~100。
error: 上传错误后触发,当不是 xhr 请求错误时,会把当前错误产生原因直接抛出,诸如 JSON 解析异常等;当产生 xhr 请求错误时,参数 err 为一个包含 code、message、isRequestError 三个属性的 object:

err.isRequestError: 用于区分是否 xhr 请求错误;当 xhr 请求出现错误并且后端通过 HTTP 状态码返回了错误信息时,该参数为 true;否则为 undefined 。
err.reqId: string,xhr请求错误的 X-Reqid。
err.code: number,请求错误状态码,只有在 err.isRequestError 为 true 的时候才有效,可查阅码值对应说明。
err.message: string,错误信息,包含错误码,当后端返回提示信息时也会有相应的错误信息。
complete: 接收上传完成后的后端返回信息,res 参数为一个 object, 为上传成功后后端返回的信息,具体返回结构取决于后端sdk的配置,

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
FAT32文件系统的存储组织结构(一)
<div class="Blog_wz1" style="word-wrap: break-word; font-size: 16px;"> <p style="word-wrap: break-word; margin-top: 5px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px;"> 对磁盘的物理结构,逻辑结构和存储
2753 0
C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取
状况描述:   需要上传文件,但是不想要保存到实体路径下,便可以用该功能来实现。   效果图:      点击【Upload】按钮,上传文件到数据库;   点击【Preview】,预览文件;   具体实现:   前台: 1 2 3 4 : 5 ...
1680 0
新功能初探 | RDS MySQL 8.0 支持 DML 语句 returning
MySQL 对于 statement 执行结果报文通常分为两类 Resultset 和 OK/ERR,针对 DML 语句则返回OK/ERR 报文,其中包括几个影响记录,扫描记录等属性。
6895 0
201604深圳云栖大会Workshop - 使用表格存储开发用户弹幕功能
使用表格存储开发用户弹幕功能 目标 使用表格存储(TableStore,原称OTS)实现视频直播的弹幕功能,通过TableStore存储弹幕,并在TableStore中检索最新弹幕实时显示到直播页面中。
3861 0
raid功能中spanning和striping模式有什么区别?
<pre id="answer-content-1371195706" accuse="aContent" class="answer-text mb-10" style="margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace;
1161 0
+关注
烟海之蓝
程序设计之道,无远弗界,御晨风而返
49
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载