热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于前端:通过uniCloud白捡一个在线图库管理工具可做图床外链

喜爱写文章的技术大佬们,应该都有一个本人的在线图片管理工具吧。尤其是在写markdown时,为了让咱们的文章“图文并茂”,显得不那么干燥,就常常须要在适合的中央插入一些关联性的图片。据(xia)说(shuo)图片还能无效缩小读者的视觉疲劳,使大脑有一个短暂的缓冲成果。然而,markdown中插入图片是重大依赖于在线可拜访

喜爱写文章的技术大佬们,应该都有一个本人的在线图片管理工具吧。

尤其是在写markdown时,为了让咱们的文章“图文并茂”,显得不那么干燥,就常常须要在适合的中央插入一些关联性的图片。

据(xia)说(shuo)图片还能无效缩小读者的视觉疲劳,使大脑有一个短暂的缓冲成果。

然而,markdown中插入图片是重大依赖于在线可拜访的图片的。如果没有一个专门的图片管理工具,要插入一张图片还真的很折腾人。

介绍

得益于当初云开发概念的衰亡,前端小伙伴们的全栈之路变得轻松了许多。

不必搭服务器、不必管数据库、不必买OSS、甚至都不必学Linux了;当然,最要害的还是这所有都变得“收费”了!

不论是阿里云、还是腾讯云,每个月都是有收费的额度的。就算额度超了,按量计费也是十分的划算。反正,我是没超过。

uniCloud就是基于阿里云和腾讯云,为开发者提供的一个云开发平台。为什么抉择uniCloud呢?次要是得益于uni家族的整个生态,能够完满的衔接起来。从开发到部署的整个流程全副都给你筹备好了,只管用就是了。

开搞

2.1 创立我的项目

你能够抉择uni官网举荐的HBuilderX创立,也能够抉择cli命令行模式,更多可参考官网文档。

上面是通过cli命令行创立vite + ts + vue3的我的项目模板:

npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

2.2 创立云服务空间

去uniCloud控制台创立一个服务空间,可自由选择阿里云和腾讯云,倡议抉择阿里云

而后通过HBuilderX关上之前创立的我的项目,在我的项目的根目录上右键,抉择创立uniCloud云开发环境,而后抉择阿里云或腾讯云进行创立。

最初在uniCloud文件夹上右键,与之前创立的云服务空间进行关联。

2.3 上传图片

次要步骤是先通过uni.chooseImage办法抉择本地图片,而后再利用uniCloud的APIuniCloud.uploadFile办法将图片上传到云存储中去。

调用uniCloud的API必须先在我的项目中进行初始化,也就是跟你开明的云空间关联起来。

uniCloud初始化:

// ... 其余代码已省略
onLaunch() {
  // 云空间初始化
  uniCloud.init({
    provider: 'aliyun',
    spaceId: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
    clientSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
  });
},

spaceIdclientSecret到uniCloud控制台去获取。

上传图片到云存储:

const res = await uniCloud.uploadFile({
  filePath: file.path,
  cloudPath: `${hash}/${file.name}`,
  onUploadProgress: (res) => {
    const { loaded, total } = res;
    console.log(loaded, total);
    this.$set(this.imgList[0], 'uploadPercent', (loaded / total) * 100);
  },
});

console.log('文件上传胜利', res);

为了避免文件反复上传,在上传之前先计算出文件的MD5码作为hash值,与已上传的文件hash值进行比拟。当然这个性能可做可不做,无伤大雅。

2.4 图片信息存入数据库

如果你想将所有上传的图片信息都保存起来,不便下次应用或者是在不同设施之间放弃同步,那就必须将每次上传后的图片地址以及图片相干信息保留在云数据库了。

好在uniCloud的数据库也是收费的,不必白不必。而且还反对在客户端间接操作数据库,云函数这些都省了,几乎不要太不便。

首先要创立一个数据表,能够在uniCloud控制台创立,也能够间接通过代码创立。为了简略,举荐间接去控制台创立吧,参考文档。

在前端间接操作数据库,须要定义表构造DB Schema,这样在插入数据的时候,就能够主动进行一些字段的校验了。

将图片信息插入数据库:

interface Album {
  _id?: string;
  name: string;
  url: string;
  hash: string;
  createAt?: number;
  updateAt?: number;
}

export function saveAlbum(data: Album) {
  const collection = uniCloud.database().collection('你创立的表名称');
  return collection.add(data).then(({ result }: any) => result);
}

2.5 读取图片列表

间接上代码:

interface AlbumListQuery extends Partial {
  pageIndex?: number,
  pageSize?: number,
}

export function getAlbumList(query?: AlbumListQuery) {
  const collection = uniCloud.database().collection('你创立的表名称');
  const { pageIndex = 1, pageSize = 20, ...data } = query || {};
  return collection.where(data).orderBy('updateAt', 'desc').orderBy('createAt', 'desc').skip(pageSize * (pageIndex - 1)).limit(pageSize).get().then(({ result }: any) => result);
}

2.6 部署上线

uni家族的益处当初就体现进去了,连页面托管都给你筹备好了,去控制台开明间接用就是了。

当初一个有基本功能的图片治理平台就算实现了。依据uniCloud官网的的提醒:为了防止资源滥用,我的我的项目没有开源。大家能够自行搭建,仅限于正规的学习与交换哦。

其余办法

…客官,别急!!!

如果你感觉下面的教程写得太烂了,看不懂,也没关系。那我就再分享两个简略粗犷的办法吧!

  1. Github
  2. Gitee

没错,就是这两个家伙!

你只有把图片放在仓库中就行了

一句代码都不必写,一个命令也都不必敲。而且Github上的图片是通过jsdelivr来拜访的,也齐全不必放心速度问题。

这是我轻易创立的两个仓库,可供参考:

https://gitee.com/moohng/cdn

https://github.com/moohng/bucket

应用办法:

https://gitee.com/moohng/cdn/raw/master/README.md
|     固定地址    |用户名|仓库名|--|分支名|文件门路

https://cdn.jsdelivr.net/gh/moohng/bucket@main/1627887240043-Javascript_01.jpg
|--------------------------|------|------|----|-------------------------------|
固定地址 + 用户名 + 仓库名 + 分支 + 文件门路

其实也还有很多第三方工具,能够同时反对很多平台的图片上传。不过我感觉有这几种办法齐全够用了,而且可靠性绝对都是比拟高的,也不必放心工夫久了图片挂掉。

完了

如果你有更好的办法举荐,欢送在评论区留言探讨。

最初,感激浏览!也可关注我的公众号【末日码农】,咱们一起学习、一起提高!


推荐阅读
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
author-avatar
葬宝御用小奶瓶2004
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有