600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 微信小程序图片上传到java后台

微信小程序图片上传到java后台

时间:2020-02-03 05:11:34

相关推荐

微信小程序图片上传到java后台

前言

关于云存储的文件上传,我想说的真的挺多的,这是一篇纯原创的基于小程序 或者是SpringBoot的云存储的全过程。

整篇教学很细很细,适合于所有的java学习者,特别是刚刚结束学习java想要练手的同学。

文章目录

前言关于我对云存储的使用与理解!一、云存储是什么?二、为什么使用云存储1.我的理解2.什么是云存储,为什么要使用云存储?好处? 三、使用云存储1.创建云存储账户2.在云存储空间内上传文件 四、如何利用java实现云存储功能1.token导入七牛云SDK利用Java对七牛云存储获取token接口实体类:获取TOKEN上传至云存储空间 2.如何使用小程序端前后分离进行上传流程图代码 总结

关于我对云存储的使用与理解!

云存储,顾名思义就是将我们的文件(在这里我泛指图片,视频,当然也可以有其他的文件类型)存在 云端的服务器里,在云端的服务器中,通过算法将我们的图片进行压缩并保存在他们的服务器里,并以连接地址的形式返回给我们。

在这里,我想到使用云存储是因为自己在写专业综合项目的时候,因为不知道怎么处理图片而引发的。恰巧碰到了这一个问题,我也是第一次接触不通过网页进行的文件处理,所以当时自己也是一脸懵逼,但能肯定的是,我一定会用到文件上传和下载。这时我还没有直接去写文件上传下载,当时的我并不知道如何通过小程序进行文件上传下载,我也不想直接把我的文件存在我的服务器里,因为这样会浪费我的服务器空间。在这之前我写过一个自己的博客,当时我有很多的图片就是存在我的服务器里,图片没有进行压缩,图片也很大,在访问博客时,很多图片同时加载,如果没有缓存的话,加载特别慢,并且连我的某些css也是加载不出来。所以这点让我很不理解。所以我有了一个大胆的想法,图床我第一次接触图床的时候就是在我写博客的时候,因为有大量的图片需要我从数据库中拿出来,所以我找到了图床这一个方法,他非常的好用,他以一个连接的形式将我的图片存进去,只要访问地址,就能拿到我的图片,正好前端也契合,所以最初的我想直接通过文件上传与下载将文件从小程序端(前端)传到后台,再将文件上传到图床网站,对图床网站进行请求。这是一个想法,我没有去证实他,但我猜测是可行的,因为图床返回的也是地址,在这时,我被迫了解到了云存储。

图床的本质其实和云存储是一样的!图床是上传图片返回地址,云存储也是!

本文详细介绍了云存储最基础的使用和实现方法。

提示:以下代码仅供参考

一、云存储是什么?

简单理解:就是将文件传入云端服务器,返回给你访问地址。

二、为什么使用云存储

1.我的理解

例如有用户传输文件给我,我如何处理这个文件?是将文件直接保存到本地,利用本地路径存储到数据库,等到前端需要展示时再通过其文件路径将文件展示出来吗?这是可以行的,但我认为,将工程和数据存储在一个服务器上是不合理的行为,这样能够减轻工程服务器压力,并且在使用时,本地服务器存储的图片是没有进行压缩的,如果服务器系统出现错误,容易出现数据出错或者丢失,并且大大减少了工程的可扩展性。在最初的我只是觉得以这种方式存储,在拿去文件的时候十分麻烦,并且不易存储。因为我存储图片都是以图床的形式去存储。

于是就有了云存储。

2.什么是云存储,为什么要使用云存储?好处?

我的理解:在我查阅了资料过后,云存储其实也是服务器存储数据,云存储就是将数据放在云端。当然毕竟是在别人公司的服务器里,相对来说不是绝对安全的,但对于我们学习和开发使用,我觉得是非常不错的。

在这里,我们将文件类的大型数据放在云存储里,减少了我们工程服务器的压力,并且云存储会将图片进行压缩,将图片放在云端,以图床形式返回给我们。

最重要的是,他以图床的形式返回给我们,能以更方便的形式存储在数据库中。

就是专门用来存放图片,同时允许你把图片对外连接的网上空间,实际上是一个链接,访问连接得到图片。

比如:

/6plmqdj5bcr

三、使用云存储

1.创建云存储账户

阿里云,腾讯云,华为云都可以,这里我以七牛云举例!

七牛云注册=>

=>

创建后,会提示你绑定自己的域名空间,这里是可以忽略的

如果自己有备案过的域名,那么就将自己备案后的域名填上即可,如果没有自己的备案域名,就使用自己的测试域名即可

存储空间名称:唯一且不可重复

存储区域:可选默认

访问控制:选择公开

2.在云存储空间内上传文件

点进自己的空间管理,点击文件上传,选择自己要上传的文件

上传成功后

点击详情

访问我们的链接地址,就能打开我们上传的图片辣!

四、如何利用java实现云存储功能

1.token

什么是token:通过请求云存储服务端,返回给你的一个base64加密数据,这是java上传文件到云存储空间的凭证,例如你的账号+密码

这里的http请求不需要我们利用RestTemplate进行请求,而是七牛云或者是阿里云服务端给我们自主提供了SDK(软件开发工具包)里面有他们自带的http请求方式。

导入七牛云SDK

<dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.10.2</version></dependency>

七牛云JavaSDK文档:/linking/6279/linking-java-sdk

利用Java对七牛云存储获取token接口

了解参数:

accessKey secretKeybucket

accessKey secretKey 你的七牛云账户密钥,作为你是七牛云用户的唯一凭证

bucket 就是你的空间名:

我们要获取token,首先要获取这三个参数,上传的流程

实体类:

@Datapublic class QiNiu {private String token;private String key;}

获取TOKEN

QiNiu qiNiu = new QiNiu();// 获取 七牛云的 token@RequestMapping(value = "/getToken", method = RequestMethod.GET)public String getToken() {String accessKey = "自己的accessKey";String secretKey = "自己的secretKey";String bucket = "自己的空间名";long expireSeconds = 600; //过期时间StringMap putPolicy = new StringMap();//auth是七牛SDK封装的类,我们需要将我们的唯一标识符传进去Auth auth = Auth.create(accessKey, secretKey);//这里的第二个参数是key 而在请求时,内部已经有指定key了 要么这里写指定key 要么为nullString upToken = auth.uploadToken(bucket,null,expireSeconds,putPolicy);qiNiu.setKey(UUID.randomUUID().toString().replaceAll("\\-", ""));qiNiu.setToken(upToken);return qiNiu.getToken();}

上传至云存储空间

@GetMapping(value = "/qiniu/upload")public Result UpLoad(){Result result = new Result();Configuration cfg = new Configuration(Region.huanan());//Region.huanan()对应自己的存储区域 默认为regionUploadManager uploadManager = new UploadManager(cfg);String token=qiNiu.getToken();String key=qiNiu.getKey();String url="";//这里是你的域名地址 测试域名或者是备案域名String filePath="你电脑的图片地址";try {//这里的key 就是我们刚刚用uuid随机生成的,意味着将文件名重置,避免重复Response response = uploadManager.put(filePath,key,token);DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);System.out.println(putRet.key);//返回的key 就是我们的文件名System.out.println(putRet.hash);String imageUrl=url+putRet.key;result.setData(imageUrl);return result;} catch (QiniuException e) {e.printStackTrace();result.setMessage("err");return result;}}

这里补充一点,如果你是从前端传过来的文件,可以直接将文件以流的形式进行上传与下载,这样就只会缓存在你的java后台,而不会存储在你的服务器里了!

2.如何使用小程序端前后分离进行上传

流程图

代码

wx.request({url: 'xxxxxx/getToken',method: 'GET',header: {'Content-Type': 'application/x-www-form-urlencoded',},success:function(res){token = res.data;wx.uploadFile({url:'你空间所在对应的上传区域地址',//详情地址可见官网filePath: fileName,//你的文件name: 'file',//文件类型formData:{'token':token,//java返回给你的token'key':key //可以用random函数生成随机key},success(res) {var data=res.data;//返回的hash和keyif(typeof data==='string')data = JSON.parse(data.trim());//解压缩url= '你的测试域名或者你的备案域名' + data.key,that.setData({url:url})wx.request({url: '你的图片返回请求',method: 'POST',header: {'Content-Type': 'application/x-www-form-urlencoded',},data:{url:url },

总结

这里提醒一下,如果你在获取token时,bucket或者key的值写错了,依然能够返回token,只是校验时会出错。

如果你觉得这篇文章对你有帮助的话,请帮忙点个赞吧!

更多文件上传下载 文件上传下载

这里附带上我的微信小程序开源项目:

项目地址:/CaseOfShe/school

演示地址:/video/BV1q3411g71P

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。