uniApp 实现上传功能(七牛云,node获取上传token)

news2024/10/7 14:30:11

版本:uniApp+vue2+uview-ui
需求:利用uView_upload组件实现上传功能
难点:兼容性强,支持pc、App、h5;

1.使用leancloud 实现上传(兼容性弱)

  • JS-SDK 只兼容pc、h5,运行到虚拟机上会报错——uniApp问答详情;

伪代码如下:
main.js

//上传
import AV from "leancloud-storage";
Vue.prototype.$AV = AV

.vue文件

  methods: {
  	  getBase64(file) {
	      return pathToBase64(file)
	        .then(base64 => {
	          return Promise.resolve(base64)
	        })
	        .catch(error => {
	          console.error(error)
	          return Promise.reject(error)
	        })
    },
     async afterRead(event) {
	      let imgFrontFileUrl = await this.getBase64(event.file);
	      setTimeout(() => {
	        const fileRes = new this.$AV.File(event.file.name, {
	          base64: imgFrontFileUrl,
	        });
	        fileRes.save().then(
	          (res) => {
	            console.log("上传数据!!!", res)
	          }, (error) => {
	            console.log(error);
	          }
	        );
	      }, 0)
    },
  }

2.使用七牛云 实现上传(兼容性强)

  • 兼容性强;
  • 提供node-SDK实现上传token的方法(因为后端没有给接口没有,需要自己动手丰衣足食!!);

node-SDK获取上传token具体实现

依赖:
“body-parser”: “^1.20.2”,
“cors”: “^2.8.5”,
“express”: “^4.18.2”,
“qiniu”: “^7.8.0”
目录结构:
在这里插入图片描述

  1. upload.js
const qiniu = require('qiniu')

// 创建上传凭证(accessKey 和 secretKey在七牛云个人中心中有,lytton是七牛云刚才创建的空间名称)
const accessKey = '' //你自己七牛的密钥
const secretKey = '' //你自己七牛的密钥
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey)
const options = {
  scope: '', //这是你创建存储空间的名字
  // deadline: 40000 //这是七牛云生成token的有效期,单位时秒,不设置默认是3600S,一串数字是时间戳
}
const putPolicy = new qiniu.rs.PutPolicy(options)
const uploadToken = putPolicy.uploadToken(mac)

module.exports = {
  uploadToken  //导出的是七牛云生成的token,很重要
}
  1. api.js——执行脚本命令:node api
const uploadToken = require("./upload.js");
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();

app.use(bodyParser.json());
app.use(cors());

// 定义GET请求的路由
app.get('/getQniuToken', (req, res) => {
  console.log(req.body);
  res.send({
    code: 200,
    data: uploadToken.uploadToken,
    messages: '获取成功'
  }
  );
});
// 启动服务器
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

使用七牛云实现上传功能

.vue文件

  methods: {
     async afterRead(event) {
	   uni.request({
        url: 'http://node获取上传token的服务地址/getUploadToken',
        method: 'GET',
        success: (res) => {
          this.token = res.data.data
          uni.uploadFile({
            url: 'https://自己的七牛云地址',
            filePath: event.file.url,
            name: 'file',
            formData: {
              'key': Math.round(new Date() / 1000) + '',
              'token': this.token
            },
            success: (res) => {
              let data = JSON.parse(res.data);
              let ImgUrl = uploadUrl + data.key
              let obj = {
                name: event.file.name,
                uid: data.hash,
                url: data.key,
                thumbUrl: data.key,
              }
            }
          })
        },
        fail: function () {
          this.$refs.uToast.error('上传失败,请重新上传!')
        }
      })
  }

以上就是uniApp实现上传功能,希望对大家有所帮助,有好的方案也可以告诉我!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度挖掘.c到.exe的整个过程,透过现象看本质

文章目录 程序的翻译环境和执行环境翻译环境编译预编译头文件的包含删除注释替换#define定义的符号 编译词法分析语法分析语义分析符号汇总 汇编 链接合并段表符号表的合并和重定位 执行环境 程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境…

【Jenkins】使用java -jar jenkins.war --httpPort=XXXX启动Jenkins报错【解决方案】

使用java -jar jenkins.war --httpPortXXXX启动Jenkins报错【解决方案】 👉欢迎关注博主【米码收割机】 👉一起学习C、Python主流编程语言。 👉机器人、人工智能等相关领域开发技术。 👉主流开发、测试技能。 文章目录 使用java -…

学习分享|一文搞懂WiFi 6/7 以及选择路由器改造网络那些事

目录 什么是 WiFi 6 WiFi 6 功能特点 WIFI 6 与前几代对比 速度更快 延时更低 容量更大 更安全 更省电 WiFi 4~WiFi 6对比 WiFi 6 核心技术 WiFi 7 WiFi 世代列表 路由器常用技术扩展 2.5Ge 网口 WAN/LAN口复用/网口盲插 双WAN口 双LAN口端口聚合 mesh组网 聊…

实验四 文件系统原理与模拟实现

实验四 文件系统原理与模拟实现 代码资源地址 Java实现的混合索引和成组链接法算法资源-CSDN文库 实验目的: 了解操作系统中文件系统的结构和管理过程,掌握经典的算法:混合索引与成组链接法等方法。 实验内容: 编程模拟实现混合…

【Android取证篇】ADB版本更新详细步骤

【Android取证篇】ADB版本更新详细步骤 更新ADB版本,解决无法连接设备问题【蘇小沐】 ADB没有自动更新的命令,我们需要下载新的ADB进行替换更新。 1、ADB查找 打开任务管理器(快捷键shiftctrlEsc或WinX),在“详细信…

Arcgis通过矢量建筑面找到POI对应的标准地址

背景 有时候我们需要找到POI对应的标准地址,也许有很多的方法, 比如通过POI的地址数据和标准地址做匹配,用sql语句就能实现; 但是POI数据中也存在很多没有地址数据的,这时候只能通过空间关联来匹配对应的标准地址了,而空间关联也有不一样的方法,一个是通过空间连接,找…

数智化转型再加速,低代码开发助力企业转型

毫无疑问,随着数智化转型的加速,越来越多的企业正在把数智化战略提升到一个全新的高度,转型的进程也正从“浅层次”的数智化走向“深层次”数智化的阶段。 据权威机构数据统计,过去几年全球数字经济同比增长15.6%,采取…

DJ5-5/6 与设备无关的 I/O 软件、用户层的 I/O 软件

目录 5.5 与设备无关的 I/O 软件 5.5.1 与设备无关软件的概念 5.5.2 与设备无关的软件的功能 5.5.3 设备分配 5.5.4 逻辑设备名到物理设备名映射的实现 5.6 用户层的 I/O 软件 5.6.1 系统调用与库函数 5.6.2 假脱机技术 SPOOLing 5.5 与设备无关的 I/O 软件 …

鲲鹏昇腾开发者峰会2023举办

[2023年5月6日 广东东莞]今天,以“创未来 享非凡”为主题的鲲鹏昇腾开发者峰会2023在东莞松山湖举办。 鲲鹏产业生态繁荣,稳步发展,正在成为行业核心场景及科研领域首选,加速推动数字化转型;昇腾产业快速蓬勃向上&…

【大数据之Hadoop】二十五、生产调优-HDFS核心参数

1 NameNode内存生产配置 Hadoop3.x系列的NameNode内存是动态分配的,可以用jmap -heap 进程号 查看分配的内存。 在hadoop102中NameNode和DataNode的内存都是自动分配的,且相等。 根据经验: NameNode最小值为1G,每增加1百万个物理…

【JavaEE初阶】多线程带来的风险~线程安全

目录 🌟观察线程不安全的现象 🌟线程不安全的原因 🌈1、多个线程修改了同一个共享变量 🌈2、线程是抢占式执行的,CPU的调度是随机的 🌈3、指令执行时没有保证原子性 🌈4、多线程环境中内…

当无触控板和鼠标的情况下,如何开启触控板

背景:一次出行匆忙,忘记带鼠标,周围也无可用工具,主要是触控板当时也被我关闭了,下面讲述一下我是如何解决在没有鼠标的情况下开启触控板的。 首先我们开启电脑后, 存在两种思路去开启触控板 第一种方案…

加拿大访问学者签证材料清单

加拿大在教育、政府透明度、社会自由度以及生活品质等方面在国际上排名名列前茅,出于环境、社会氛围等因素,不少学者将目光聚焦于这个北美的发达国家。加拿大的访问学者签证属于工作签证,过去只要有邀请函就可以办理,但是自去年2月…

Python:Python底层原理:Python的整数是如何实现的

Python整数在底层存储方式 1. Python整数在底层对应的结构体 PyLongObject2.整数是怎么存储的2.1 整数0存储2.2 整数12.3 整数-12.4. 2**30 -12.5 . 2**302.6 . ob_digit[a, b, c] 对应整数计算 计算整数所占内存大小总结 Python的底层是C/C ,但是 C/C 能表示的整数…

Linux挂载新磁盘到根目录

添加磁盘到需要挂载的机器上 lsblk查看硬盘挂载情况,sdb,sdc为我新挂载的磁盘 fdisk -l查看挂载之前的分区情况 为新硬盘创建分区 fdisk /dev/sdb 终端会提示: Command (m for help):输入:n 依次输入p…

【HTTPS】

HTTP明文传输问题 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。冒充风险,比如冒充淘宝网站,用户钱容易没。 TLS协议解决H…

【雅可比左乘右乘】

常见雅可比左乘(以自变量R为例子,围绕旋转点p的旋转点的左扰动雅可比): 旋转点的右扰动雅可比(右乘): 左雅可比和右雅可比之间的区别在于它们各自描述了不同的变换方向。左雅可比将输入空…

硬件-6-基站和移动通信系统的演进

1G、2G、3G、4G、5G 移动通信技术发展简史 1 移动通信系统简介 移动通信系统从第一代移动通信系统(1G)开始逐渐发展,目前已经发展到第四代移动通信系统(4G),第五代移动通信系统(5G)也已经开始标准化,预计2020年商用,6G预计2030年…

Linux网络架构: XDP, iptables/netfilter和iproute2/tc/ip/Qdiscs

本文目录 1、架构框图2、网络架构分成三大块3、网络架构-----对应的配置工具-----对应的原理与概念 说到Linux的网络架构,就离不开谈。。。这些东西。这几个概念很容易混淆起来,但如果仔细去看,就会发现这个Linux的网络架构的设计其实是非常简…

10:00面试,10:04就出来了 ,问的实在是太...

从外包出来,没想到竟然死在了另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以我也就忍了。没想到12月一纸通知,所有人都不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个…