PHP上传文件到腾讯cos上源码,通过COS上传文件至腾讯云

最近在做项目的时候,很多次通过Cos将文件上传到腾讯云。腾讯官方也提供了专门的API接口(cloud.tencent.com/document/pr… )

通过Cos上传的大体思路是这样的,第一步:实例化一个Cos。第二步:通过后端接口获取秘钥。第三步:选择需要上传的文件进行文件上传,上传成功之后,在回调函数中会返回文件的地址。第四步:再将这个地址通过后端接口保存到数据库中,就可以在项目中使用上传的文件。当然上传之前还需进行相关配置,Bucket: 存储桶 Bucket 的名称,命名规则为 BucketName-APPID,此处填写的存储桶名称必须为此格式。Region:Bucket 所在地域,枚举值请参阅 地域和访问域名:cloud.tencent.com/document/pr…

1、安装cos-js-sdk-v5

npm install cos-js-sdk-v5 --save

2、引入cos-js-sdk-v5我这里是局部引入,当然也可以在main.js里面全局引入。

import Cos form 'cos-js-sdk-v5'

3、实例初始化Cos

// 初始化上传文档实例

created(){

this.cos = new Cos({

getAuthorization: this.getDocSignature

})

},

methods: {

// 获取上传文档签名

getDocSignature(options, callback) {

const that = this

$.ajax({

url: '后台提供的请求地址', // 获取客户端上传签名的 URL

type: 'GET',

dataType: 'json',

success(result) { // result 是派发签名服务器的回包

if (result.code === statusCode.SUCCESS) {

const fileKey = JSON.parse(result.data.fileKey).data

callback({

TmpSecretId: fileKey.credentials.tmpSecretId,

TmpSecretKey: fileKey.credentials.tmpSecretKey,

XCosSecurityToken: fileKey.credentials.sessionToken,

ExpiredTime: fileKey.expiredTime

})

} else {

// 获取秘钥失败的相关操作

}

}

})

},

uploadDoc() { // 调取文档上传相关接口

this.cos.sliceUploadFile({

Bucket: '99999', // 桶的名字,命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式

Region: '地区', //Bucket所在的区域

Key: this.fileObj.name,

Body: this.fileObj, // 文件的信息

}, (err, data) => {

if (!err && data) {

this.fileName = this.fileObj.name

this.key = data.Key

this.fileId = data.Key

this.cos.getObjectUrl({ // 获取文件访问地址

Method: 'PUT',

Key: this.key,

Bucket: 'aaa',

Region: '地区',

Sign: false

}, (err, data) => {

if (!err) { // 文档地址

this.fileUrl = data.Url

} else {

this.$message.error('上传失败')

}

})

} else {

this.$message.error('上传失败')

}

})

}

复制代码

秘钥可以是永久的也可以是临时的,由于密钥放在前端会暴露 SecretId和SecretKey,所以把永久密钥过程放在后端,前端通过发送一个ajax请求获取临时秘钥,这样安全性会更高。

你可能感兴趣的:(PHP上传文件到腾讯cos上源码,通过COS上传文件至腾讯云)