当前位置:   article > 正文

使用uni-file-picker上传文件(图片)到腾讯云存储COS步骤_un-file-picker实现上传图片

un-file-picker实现上传图片

微信小程序上传文件到腾讯云存储COS:

准备步骤:

1.拿到腾讯云的API密钥:在API密钥管理中获取SecretId和SecretKey,没有的话生成一个

2.开通COS存储创建存储桶,需要拿到存储桶名字和所在地域

3.打开对象存储的产品文档进入SDK文档里的小程序SDK里面有源码下载地址

主要是为了下载这个cos-wx-sdk-v5.js文件 复制到你的项目里,在使用页面里面导入

嫌麻烦的话可以去网上找一样的

或者用npm安装:npm install cos-wx-sdk-v5

在页面导入:import COS from 'cos-wx-sdk-v5'

对象操作这里面有相关的方法

使用uni-file-picker 代码部分:

  1. <template>
  2. <view>
  3. <uni-file-picker v-model="imageValue" limit="6" fileMediatype="image" mode="grid" @select="select"
  4. @delete="delImage" />
  5. </view>
  6. </template>

上传方法代码:(不能格式化看着别扭)

imageValue数组里的格式要是对象里面是上传成功返回的图片地址{url:'******'}

删除操作就是根据上传时候配置的key字段进行删除

  1. import COS from '@/utils/cos-wx-sdk-v5.js'
  2. export default {
  3. data() {
  4. return {
  5. imageValue: [],
  6. };
  7. },
  8. methods: {
  9. // 获取上传状态
  10. select(e) {
  11. var that = this
  12. const cos = new COS({
  13. SecretId: 'AKIDnX9b*********qwPefU6D5', // 获取的密钥id
  14. SecretKey: 'kIfojPq3*********yzoQp35tWv6', // 获取的密钥key
  15. });
  16. console.log('选中', e);
  17. var filePathList = e.tempFilePaths;
  18. filePathList.forEach((item, index) => {
  19. const pathName = that.getRandomString() + '.png'
  20. // 微信小程序
  21. cos.uploadFile({ //putObject
  22. Bucket: '****-131***0991', // 填入您自己的存储桶,必须字段
  23. Region: 'ap-beijing', // 存储桶所在地域,例如ap-beijing,必须字段
  24. Key: pathName, // 上传的cos时,起一个别名
  25. FilePath: item, // 要上传的文件
  26. SliceSize: 1024 * 1024 * 5, // 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须
  27. },
  28. function(err, data) {
  29. console.log(index, err || data);
  30. if (err) return
  31. that.imageValue.push({
  32. url: data.headers.location,
  33. name: pathName
  34. })
  35. })
  36. })
  37. },
  38. delImage(e) {
  39. const delkey = e.tempFile.name
  40. const cos = new COS({
  41. SecretId: 'AKIDnX9bpoa8***********EMFwPefU6D5', // 获取的密钥id
  42. SecretKey: 'kIfojPq33rQ************Qp35tWv6', // 获取的密钥key
  43. });
  44. // 删除操作
  45. cos.deleteObject({
  46. Bucket: '***-1314*****91', // 填入您自己的存储桶,必须字段
  47. Region: 'ap-beijing', // 存储桶所在地域,例如ap-beijing,必须字段
  48. Key: delkey, // 存储在桶里的对象键(例如1.jpg,a/b/test.txt),必须字段
  49. }, function(err, data) {
  50. console.log(err || data);
  51. });
  52. }
  53. }
  54. }

getRandomString方法是一个随机生成字符串的方法,网上找的

  1. getRandomString(len) {
  2. let _charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789',
  3. min = 0,
  4. max = _charStr.length - 1,
  5. _str = ''; //定义随机字符串 变量
  6. //判断是否指定长度,否则默认长度为15
  7. len = len || 15;
  8. //循环生成字符串
  9. for (var i = 0, index; i < len; i++) {
  10. index = (function(randomIndexFunc, i) {
  11. return randomIndexFunc(min, max, i, randomIndexFunc);
  12. })(function(min, max, i, _self) {
  13. let indexTemp = Math.floor(Math.random() * (max - min + 1) + min),
  14. numStart = _charStr.length - 10;
  15. if (i == 0 && indexTemp >= numStart) {
  16. indexTemp = _self(min, max, i, _self);
  17. }
  18. return indexTemp;
  19. }, i);
  20. _str += _charStr[index];
  21. }
  22. return _str;
  23. },

如果上传成功之后返回的地址访问不了,可能是存储桶权限的问题

应该是这个报错:This XML file does not appear to have any style information associated with it. The document tree is shown below.

私有读写改为公有读私有写就行了

记得 不校验合法域名、web view (业务域名)TLS版本以及HTTPS证书

 下课。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/449720
推荐阅读
相关标签
  

闽ICP备14008679号