uniapp上传文件到腾讯云

本文介绍了如何在JavaScript中使用腾讯云COSSDK进行文件上传,包括下载SDK、设置秘钥、生成签名、指定Bucket和Region,以及配置CORS策略。详细展示了如何封装上传功能和处理文件格式问题。
摘要由CSDN通过智能技术生成
官方API地址

javaScript_SDK

 下载cos
npm i cos-js-sdk-v5 --save
生成签名

获取secretId和secretKey

let cos = new COS({
		SecretId: '*******************************',
		SecretKey: '******************************',
	})

参考文章:腾讯云如何获取secretId和secretKey_腾讯云 对象存储 只有secretid 没有secretkey-CSDN博客

上传文件
cos.uploadFile({
		Bucket: 'link-******',
		/* 填写自己的 bucket,必须字段*/
		Region: 'ap-nanjing',
		/* 存储桶所在地域,必须字段 */
		Key: filename,
		/* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
		Body: selectedFile, // 上传文件对象
		SliceSize: 1024 * 1024 * 5,
		/* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */
		onProgress: function(progressData) {
			console.log(JSON.stringify(progressData));
		}
	}, function(err, data) {
		if (err) {
			console.log('上传失败', err);
		} else {
			console.log('上传成功');
		}
	});
配置CORS

appleId很明显就是识别身份用的

SecretId和SecretKey是用来生成签名的(我后面会说)

Bucket和Region是用来识别地区信息的

完整代码

1、创建upload.js文件进行封装

import COS from 'cos-js-sdk-v5';//引入

export function Upload(selectedFile, filename) {

	console.log(selectedFile, filename);
    //selectedFile:文件, filename:文件名称

	let cos = new COS({
		SecretId: '********************************',
		SecretKey: '********************************',
	})
	cos.uploadFile({
		Bucket: 'link-*********',
		/* 填写自己的 bucket,必须字段*/
		Region: 'ap-nanjing',
		/* 存储桶所在地域,必须字段 */
		Key: filename,
		/* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
		Body: selectedFile, // 上传文件对象
		SliceSize: 1024 * 1024 * 5,
		/* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */
		onProgress: function(progressData) {
			console.log(JSON.stringify(progressData));
		}
	}, function(err, data) {
		if (err) {
			console.log('上传失败', err);
		} else {
			console.log('上传成功');
		}
	});

}

2、调用

<template>
	<view>
		<u-upload  @afterRead="afterRead"name="1" multiple :maxCount="1"></u-upload>
	</view>
</template>

<script setup>
	import {
		ref
	} from 'vue';

	import {
		Upload
	} from '@/store/upload.js'

	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()
		})
	}

	// 新增图片
	const afterRead = async (event) => {
		console.log(event, "event");
		const file = event.file[0];
		let blob = await parseFile(file.url, file.name)
		Upload(blob, file.name);
	}
</script>

<style lang="scss">

</style>

不知道为什么,组件库获得的file文件对象不能直接上传成功,需要转换格式,所以我就进行了格式转换

其他相关文章:

使用腾讯云COS提示CORS策略阻止的解决方案-CSDN博客        

报错Error: params body format error, Only allow File|Blob|String文件上传到腾讯云 ,转换文件格式-CSDN博客

  • 9
    点赞
  • 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
发出的红包

打赏作者

宝子向前冲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值