uniapp上传文件到腾讯云

官方API地址

javaScript_SDK

下载cos
复制代码
npm i cos-js-sdk-v5 --save
生成签名

获取secretId和secretKey

javascript 复制代码
let cos = new COS({
		SecretId: '*******************************',
		SecretKey: '******************************',
	})

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

上传文件
javascript 复制代码
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文件进行封装

javascript 复制代码
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、调用

javascript 复制代码
<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博客

相关推荐
2601_9679801114 小时前
腾讯云也瞄准了微信生态,推出一系列小程序开发工具
腾讯云·云开发·小程序开发·技术方案·微信生态
码间留白20 小时前
六轮真机实验后,我把鸿蒙直播推流的 UI 全逼成了原生——uni-app 适配 HarmonyOS NEXT 完整复盘
uni-app·鸿蒙·harmonyos next·直播推流·arkts/arkui
牛奶咖啡132 天前
云计算平台应用实践——云计算与云平台
云计算·云平台·云平台的三大服务模式·云计算与云平台的关系·laas paas saas·云平台的主流架构·国内外的主流云平台对比与选型
wuxianda10302 天前
2026 苹果审核 4.3 (a) 被拒全解析|Guideline 4.3a spam 马甲包拒审原因 + 避坑方案
flutter·uni-app·苹果上架
逐流人3 天前
手工建集群到全自动发布:k8s集群部署与DevOps流水线整合实战
ci/cd·云原生·kubernetes·云计算·devops
wz97543 天前
走进云计算:从硬件到云平台,读懂数字化底层基石
云计算
Kari114 天前
企业大模型RAG知识库从0到1搭建指南:腾讯云ADP+JOTO实战
人工智能·云计算·腾讯云
Kari114 天前
企业级智能体平台怎么选:腾讯云ADP与其他主流技术路线的架构对比
架构·云计算·腾讯云
头发还在的女程序员4 天前
基于 Spring Boot + Vue 3 + uni-app 的灵活用工系统:四端架构与业务流程设计
vue.js·spring boot·uni-app·灵活用工·灵工系统
无所畏俱的老尹6 天前
Agent 落地为什么需要影子对照:同输入只读双跑、写动作变提案、差异报警,比直接切全量更安全
人工智能·机器学习·云计算·aigc·devops