从0到1,申请cos服务器并上传图片到cos文件服务器

目录

准备工作

Java代码编写

控制台打印

整理成工具类

编写接口

Postman测试


准备工作

1.进入网址
腾讯云 产业智变·云启未来 - 腾讯 (tencent.com)

2.搜索cos,点击立即使用,刚开始会免费赠送你

3.存储都是基于桶的,先创建桶,在桶里面创建文件夹,所以点击创建桶

4.查看桶列表,点击左侧

5.点进去,创建文件夹,我这里创建了两个文件夹

6.桶搞完了,要拿到 secretId secretKey,进入下面的地址
登录 - 腾讯云
点击新建密钥,创建自己的密钥

以上准备工作就做完了,下面进行代码测试


Java代码编写

package com.zsp.quartz.util.OSS;import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.*;
import com.qcloud.cos.region.Region;
import java.io.File;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.UUID;public class getOSSToken {public static void main(String[] args) {// 初始化客户端String secretId = "xxxxxx";String secretKey = "xxxxxx";COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);Region region = new Region("ap-nanjing");ClientConfig clientConfig = new ClientConfig(region);clientConfig.setHttpProtocol(HttpProtocol.https);COSClient cosClient = new COSClient(cred, clientConfig);//定义存储桶String bucket = "zsp-image-xxxxxx"; //存储桶名称,格式:BucketName-APPID// 上传文件File localFile = new File("C:/Users/UU/Desktop/我的/生活照.jpeg");// 指定文件上传到 COS 上的路径,即对象键。String path = "image/"+ LocalDateTime.now() +"file"+ UUID.randomUUID()+".jpeg";// 三个参数:桶名,文件夹路径,文件PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, path, localFile);System.out.println("key为:"+putObjectRequest.getKey()); // image/2023-10-18T11:58:25.792fileef9bb4a9-3b0a-49f1-92a4-5bc3f3572977.jpeg// 上传到osscosClient.putObject(putObjectRequest);// 得到图片地址Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);// 三个参数:桶名,文件名,过期时间URL url = cosClient.generatePresignedUrl(bucket, putObjectRequest.getKey(), expiration);System.out.println(url.toString());//关闭资源cosClient.shutdown();}
}

控制台打印

整理成工具类

package com.zsp.quartz.util.COS;import cn.hutool.core.date.DateUtil;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.*;
import com.qcloud.cos.region.Region;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.Random;public class COSUpload {private static String secretId = "asdkhjahsdkjhasjkdhas";private static String secretKey = "asmdiuoahuihas";private static String bucket = "zsp-image-xxxxxxxx";private static String fileFolder = "image/";private static COSClient cosClient;static {COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);Region region = new Region("ap-nanjing");ClientConfig clientConfig = new ClientConfig(region);clientConfig.setHttpProtocol(HttpProtocol.https);cosClient = new COSClient(cred, clientConfig);}public static String uploadFileToCOS(MultipartFile file) throws IOException {String originalFilename = file.getOriginalFilename();String substring;if (originalFilename.contains(".")) {substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();} else {substring = originalFilename;}Random random = new Random();String fileName = random.nextInt(10000) + System.currentTimeMillis() + substring;InputStream inputStream = null;inputStream = file.getInputStream();return uploadFileCOS(inputStream, fileName, fileFolder);}public static String uploadFileCOS(InputStream instream, String fileName, String fileFolder) {String ret = "";try {// 创建上传Object的MetadataObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setContentLength(instream.available());objectMetadata.setCacheControl("no-cache");objectMetadata.setHeader("Pragma", "no-cache");if (fileName.contains(".")) {objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf("."))));} else {objectMetadata.setContentType(getcontentType(fileName));}objectMetadata.setContentDisposition("inline;filename=" + fileName);String filePath = fileFolder + DateUtil.format(new Date(), "yyyy/MM/dd") + "/" + fileName;// 上传文件PutObjectRequest data = new PutObjectRequest(bucket, filePath, instream, objectMetadata);cosClient.putObject(data);Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);// 三个参数:桶名,文件名,过期时间URL url = cosClient.generatePresignedUrl(bucket, data.getKey(), expiration);ret = url.toString();} catch (IOException e) {e.printStackTrace();} finally {try {if (instream != null) {instream.close();}} catch (IOException e) {e.printStackTrace();}}return ret;}public static String getcontentType(String FilenameExtension) {if (FilenameExtension.equalsIgnoreCase(".bmp")) {return "image/bmp";}if (FilenameExtension.equalsIgnoreCase(".gif")) {return "image/gif";}if (FilenameExtension.equalsIgnoreCase(".jpeg") || FilenameExtension.equalsIgnoreCase(".jpg")|| FilenameExtension.equalsIgnoreCase(".png")) {return "image/jpeg";}if (FilenameExtension.equalsIgnoreCase(".html")) {return "text/html";}if (FilenameExtension.equalsIgnoreCase(".txt")) {return "text/plain";}if (FilenameExtension.equalsIgnoreCase(".vsd")) {return "application/vnd.visio";}if (FilenameExtension.equalsIgnoreCase(".pptx") || FilenameExtension.equalsIgnoreCase(".ppt")) {return "application/vnd.ms-powerpoint";}if (FilenameExtension.equalsIgnoreCase(".docx") || FilenameExtension.equalsIgnoreCase(".doc")) {return "application/msword";}if (FilenameExtension.equalsIgnoreCase(".xml")) {return "text/xml";}if (FilenameExtension.equalsIgnoreCase(".pdf")) {return "application/pdf";}return "image/jpeg";}
}

编写接口

/*** 图片上传* @param file* @return* @throws Exception*/private final static int maxSize = 15 * 1024 * 1024;@PostMapping("/oss/upload")public Result<String> uploadFile(@RequestParam("file")MultipartFile file) throws Exception {//检查文件是否为空if (file.isEmpty()) return Result.fail("请选择图片");//检查文件大小if (file.getSize() > maxSize) return Result.fail("请上传15M以内的图片");final String url = COSUpload.uploadFileToCOS(file);ImageResult imageResult = new ImageResult(url);return Result.success(url);}

Postman测试

COS服务器显示

按照时间节点创建日期文件夹进行存储。

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

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

相关文章

PyQt 问题记录

1.现成的组件不一定线程安全&#xff0c;&#xff08;包括且不限于数据的修改竞争,和一些组件的崩溃 ) 对于PyQt 的线程使用&#xff0c;可能还需要更谨慎些 保存逻辑 QuestionBox("保存/Save")def Save(self):okFlagFalseerrFlagFalseWriteCmd{}for it in self.Mode…

视频SDK开发,多平台SDK快速接入

随着科技的不断发展&#xff0c;视频已经成为了企业业务中不可或缺的一部分。无论是在线教育、企业培训还是产品展示&#xff0c;视频都发挥着至关重要的作用。为了满足企业对视频应用的需求&#xff0c;美摄视频SDK应运而生&#xff0c;为企业提供了一站式的视频解决方案。 一…

从入门到进阶 之 ElasticSearch 节点配置 集群篇

&#x1f339; 以上分享 ElasticSearch 安装部署&#xff0c;如有问题请指教写。&#x1f339;&#x1f339; 如你对技术也感兴趣&#xff0c;欢迎交流。&#x1f339;&#x1f339;&#x1f339; 如有需要&#xff0c;请&#x1f44d;点赞&#x1f496;收藏&#x1f431;‍&a…

回顾 | E³CI效能认知与改进论坛,助力企业研发效能度量和提升

2023年8月&#xff0c;TiD质量竞争力大会组委会和ECI专家委员会成功举办TiD大时段课程“度量驱动研发效能提升”与“ECI效能认知与改进论坛”。与会专家以《ECI软件研发效能度量规范》团体标准为要点&#xff0c;为企业研发效能度量和提升分享诸多实践成果与经验。 《ECI软件研…

es6(三)——常用es6(函数、数组、对象的扩展)

ES6的系列文章目录 第一章 Python 机器学习入门之pandas的使用 文章目录 ES6的系列文章目录0、数值的扩展一、函数的扩展1、函数的默认值2、函数的reset参数 二、数组的扩展1. 将对象转成数组的Array.from()2. 将对象转成数组的Array.from()3. 实例方法 find()&#xff0c;fin…

高质量发展新引擎:智能工业操作系统助力产业升级

工业操作系统是推动制造业高质量发展的重要支撑&#xff0c;也是推动经济发展方式转变的重要手段。打造自主可控的工业实时操作系统是实现工业科技自立自强的必然要求&#xff0c;是推动高质量发展的必由之路。 基于软件定义控制的智能工业操作系统 Intewell操作系统是由科东…

uniapp高德地图ios 使用uni.chooseLocation选取位置显示没有搜索到相关数据

uniapp云打包后&#xff0c;高德地图ios选取位置显示“ 对不起&#xff0c;没有搜索到相关数据” 详细问题描述 废话不多说&#xff0c;直接上图 解决方案 1.打开高德地图开发平台 2.重新创建key 3.获取云打包时的ios报名作为安全码 4.使用生成的高德key更改manifest.json里…

Ubuntu系统忘记Root用户密码-无法登录系统-更改Root密码-Ubuntu系统维护

一、背景 很多时候&#xff0c;我们总会设计复杂的密码&#xff0c;但是大多数时候&#xff0c;我们反而会先忘记我们的密码&#xff0c;导致密码不仅仅阻挡其他用户进入系统&#xff0c;同时也阻碍我们进入系统。 本文将介绍在忘记密码的情况下&#xff0c;如何进入系统并更改…

分析并实现Android中的MVC、MVP架构模式

架构是什么 架构是为了解决特定的问题而提出来的&#xff0c;而且它还有特定的规则&#xff0c;能够把整个应用的整体进行角色的划分。并且他还能够约定角色之间的联系沟通机制。 所以学习架构要带着以下三个问题去理解&#xff1a; 。架构解决了什么问题&#xff1f; 。架…

AUTOSAR AP硬核知识点梳理(1)

一 什么是 Adaptive AUTOSAR? Adaptive AUTOSAR是一种新的汽车软件框架,旨在满足现代汽车行业中不断增长的技术需求。随着汽车变得越来越智能,对处理器的性能要求也在不断增长。 Adaptive AUTOSAR旨在通过提供高性能计算和通信机制以及灵活的软件配置来满足这些需求,为车…

软件工程与计算总结(二十)软件交付

软件交付是软件项目的结束阶段 &#xff0c;标志着软件开发任务的完成——其作为一个分水岭&#xff0c;区分了软件开发与软件维护两个既连续又不同的软件产品生存状态~ 在经历连续的辛苦工作之后&#xff0c;开发人员在胜利曙光之前难免会忽视软件交付阶段的一些工作——在准…

踩坑记 BSS段的初始化

title: 踩坑记 BSS段的初始化 category_bar: true categories: blog tags:embedded date: 2023-10-20 19:23:05 前言 接手一个项目&#xff0c;调试全靠串口日志&#xff0c;测试同事测试产品的时候无法拿到日志&#xff0c;刚好产品RAM够大&#xff0c;且刚好有SD卡。所以就…

Arcgis中像元值变化问题,拉伸显示的是否为实际像元值范围?

Arcgis中合并栅格但像元值变化 问题描述 这是四幅栅格&#xff0c;范围都在-1-9之间&#xff0c;怀疑这个范围是否是真实的范围。因为经常听到同学说放到arcgis拉伸显示之后&#xff0c;值变化了&#xff0c;所以研究一下。 原因 可以打开ENVI的像元快速统计工具&#xff…

基于GRU的 电影评论情感分析 - python 深度学习 情感分类 计算机竞赛

文章目录 1 前言1.1 项目介绍 2 情感分类介绍3 数据集4 实现4.1 数据预处理4.2 构建网络4.3 训练模型4.4 模型评估4.5 模型预测 5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于GRU的 电影评论情感分析 该项目较为新颖&#xff0c;适合作为竞…

大托,如何站上天心南部的价值高地?

作者 | 魏启扬 陈宇航 来源 | 洞见新研社 陈飞 摄 “商贾云集于四方&#xff0c;市井数盈于万户”&#xff0c;长沙南城古往今来生生不息的热辣与烟火&#xff0c;每隔一段时间&#xff0c;都会有璀璨的迸发。 才在“加长版”黄金周释放了“不夜南城”的魅力&#xff0c;第…

2023年浙大MEM考前80天上岸经验分享

时间过得真快&#xff0c;转眼间已经是十月份了。回想起去年这个时候&#xff0c;我还在为考研而感到焦虑不安。然而&#xff0c;如今我已经在浙大MEM项目学习了一个多月的时间了。在这一个月的学习过程中&#xff0c;我不仅学到了许多专业知识&#xff0c;还结识了很多志同道合…

小白学java--垃圾回收机制(Garbage Collection)

压测过程中&#xff0c;作为测试会时不时听到研发说命中gc了&#xff0c;如果一头雾水&#xff0c;来看看什么是gc。 1、什么是垃圾回收机制 垃圾回收的执行过程会导致一些额外的开销&#xff0c;例如扫描和标记对象、回收内存空间等操作。这些开销可能会导致一定的性能损失和…

QT计时器

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //计时器类 #include <QTime> //时间类 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widg…

microcom串口调试工具使用

microcom串口助手使用介绍 microcom是一个在终端中使用的串口助手&#xff0c;类似平常使用SSCOM一样的东西&#xff0c;不过是在终端中使用而已。 使用的是busybox构建的文件系统 microcom源码路径&#xff1a;busybox/miscutils/microcom.c microcom 参数&#xff1a; [r…

编程题总结 --- 2018

&#xff08;1&#xff09;输入一串字符串&#xff0c;字符串以“#”结尾&#xff0c;判断输入的字符串中0至9的个数。 #include<iostream>using namespace std;int main(){int sum 0;string s;while(cin >> s){if(s "#") break;int n s.size();for(…