uniapp上传图片到腾讯云COS

本文详细介绍了如何使用uniapp将图片上传到腾讯云COS,包括H5和小程序的上传步骤。内容涉及处理上传数据格式、转换File对象、Blob对象以及完整代码示例。
摘要由CSDN通过智能技术生成

使用第三方总是非常麻烦的,这里使用uniapp的条件编译,给大家带来 微信小程序的上传图片以及H5的上传图片 到腾讯云COS

毕竟文档很难看,由于进行了封装,在最后再显示完整代码

首先解决H5的上传

我这里看的文档是
链接: https://cloud.tencent.com/document/product/436/64960

使用的是putObject,准备好以下数据Bucket和Region,以及创建一个cos对象,这些数据如果是自己创建的存储桶都知道的,不是自己创建的找后端或者项目经理拿

// #ifdef H5
import COS from 'cos-js-sdk-v5';
// #endif
// #ifdef MP-WEIXIN
import COS from 'cos-wx-sdk-v5'
// #endif
const Bucket = ""; /* 填入您自己的存储桶,必须字段 */
const Region = ''; /* 存储桶所在地域,例如ap-beijing,必须字段 */
const cos = new COS({
   
	SecretId: '',
	SecretKey: '',
})
1.在选完图片之后,先看看返回来的数据是什么格式的

使用putObject进行上传,但是,这个Api要求传入的文件是File对象或者Blob对象

在这里插入图片描述

别问我为什么支持字符串不用字符串,问就是试过,但不行,还是老老实实转File对象和Blob对象吧

如果返回来的数据格式是以上两种中的一种,那皆大欢喜,不是就用以下方法转

(a)如果是base64转Blob对象 用以下方法:
// base64转blob
function parseBlob(dataurl) {
   
	var arr = dataurl.split(',');
	var mime = arr[0].match(/:(.*?);/)[1];
	var bstr = atob(arr[1]);
	var n = bstr.length;
	var u8arr = new Uint8Array(n);
	while (n--) {
   
		u8arr[n] = bstr.charCodeAt(n);
	}
	return new Blob([u8arr], {
    type: mime });
}
(b)如果是Blob Url(Blob的string)转File对象用以下方法:
function parseFile(src,name) {
   
	let that = this
	return new Promise((resolve, reject) => {
   
		let xhr = new XMLHttpRequest()
		xhr.open('GET', src, true)
		xhr.responseType = 'blob'
		xhr.onload = function (e) {
   
			if (this.status == 200) {
   
					let myBlob = this.response
					let files = new window.File(
						[myBlob],
						name,
						{
    type: myBlob.type }
					) // myBlob.type 自定义文件名
					resolve(files)
			} else {
   
					reject(false)
			}
		}
		xhr.send()
	})
}
2.上传

我这里返回来的是base64,就用(a)方法了,点击上传,我这里是自己传的一个文件名,如:xxx.jpg

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要将图片上传到腾讯云OSS,你需要进行以下步骤: 1. 在腾讯云中创建一个对象存储桶(Bucket)。 2. 在uniapp中安装并引入腾讯云OSS SDK。 3. 编写上传代码,包括以下步骤: - 获取上传凭证:在腾讯云中创建一个临时的密钥,用于上传图片。 - 创建上传任务:使用SDK提供的uploadObject方法,将图片进行上传。 - 监听上传进度:可以使用SDK提供的progress方法,获取上传进度信息。 这是一个示例代码,可以帮助你更好地理解上传图片腾讯云OSS的过程: ```javascript import COS from "cos-wx-sdk-v5"; const cos = new COS({ getAuthorization: async function (options, callback) { try { // 获取上传凭证 const res = await uni.request({ url: "上传凭证接口", method: "GET", }); const { credentials } = res.data; callback({ TmpSecretId: credentials.tmpSecretId, TmpSecretKey: credentials.tmpSecretKey, SecurityToken: credentials.sessionToken, StartTime: credentials.startTime, ExpiredTime: credentials.expiredTime, }); } catch (err) { console.log(err); } }, }); export default { methods: { async uploadFile(file, fileName) { try { // 创建上传任务 const res = await new Promise((resolve, reject) => { cos.uploadObject( { Bucket: "你的Bucket名称", Region: "你的Bucket所在地域", Key: fileName, FilePath: file.path, }, function (err, data) { if (err) { reject(err); } else { resolve(data); } } ).on("progress", function (info) { console.log(info.percent * 100 + "%"); }); }); console.log(res); } catch (err) { console.log(err); } }, }, }; ``` 这段代码中,首先引入了腾讯云OSS SDK,并创建了一个COS实例。在上传文件的方法中,首先调用了 `getAuthorization` 方法获取上传凭证,然后使用 `cos.uploadObject` 方法创建上传任务。同时,也可以使用 `on` 方法监听上传进度,以便实时更新上传进度。最后,上传完成后,会返回上传成功的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值