官方文档:https://cloud.tencent.com/document/product/436/10199

首先导入依赖

<!--腾讯云cos相关依赖-->
<dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.89</version>
</dependency>
<!--接收文件-->
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version>
</dependency>

创建一个 FileServer 类,处理上传逻辑

package com.szx.boot03tengxunyun.server;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 com.szx.boot03tengxunyun.bean.CosBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;/*** @author songzx* @create 2022-07-19 11:28*/
@Service
public class FileServer {// 1 初始化用户身份信息(secretId, secretKey)。// SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理String secretId = "";String secretKey = "";String filePath = "https://blogimages-1257342648.cos.ap-shanghai.myqcloud.com/"; // 文件基础路径String bucketName = "blogimages-1257342648"; // 指定文件将要存放的存储桶COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);// 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。Region region = new Region("ap-shanghai"); // ap-shanghai 表示上海ClientConfig clientConfig = new ClientConfig(region);public String upload(MultipartFile multipartFile) throws IOException {String filename = multipartFile.getOriginalFilename();// 这里建议设置使用 https 协议// 从 5.6.54 版本开始,默认使用了 httpsclientConfig.setHttpProtocol(HttpProtocol.https);// 3 生成 cos 客户端。COSClient cosClient = new COSClient(cred, clientConfig);//这里文件名用了当前时间 防止重复,可以根据自己的需要来写SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String[] fileNames= filename.split("\\.");String name = fileNames[0]+ sdf.format(new Date())+ filename.substring(filename.lastIndexOf("."), filename.length());// 指定文件上传到 COS 上的路径,即对象键。例如对象键为folder/picture.jpg,则表示将文件 picture.jpg 上传到 folder 路径下String key = "javaUpload/" + name;PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, multipartFile.getInputStream(),null);// 执行上传方法cosClient.putObject(putObjectRequest);// 返回线上地址return filePath + key;}
}

封装一个 msg 类,用来返回上传成功返回的数据信息

package com.szx.boot03tengxunyun.bean;import java.util.HashMap;/*** @author songzx* @create 2022-07-19 15:36*/
public class Msg {int code; // 接口响应状态码,500 异常,200 OKString message; // 接口返回的信息HashMap<String,Object> data = new HashMap<>(); // 接口实际返回的内容/*** 接口成功返回方法* @author Songzx* @date 2022/7/2*/public static Msg success(){Msg msg = new Msg();msg.setCode(200);msg.setMessage("成功");return msg;}/*** 接口失败返回方法* @author Songzx* @date 2022/7/2*/public static Msg error(){Msg msg = new Msg();msg.setCode(500);msg.setMessage("失败");return msg;}/*** 可以链式调用的add方法* @author Songzx* @date 2022/7/2*/public Msg add(String key,Object data){this.getData().put(key,data);return this;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public HashMap<String, Object> getData() {return data;}public void setData(HashMap<String, Object> data) {this.data = data;}public Msg(int code, String message, HashMap<String, Object> data) {this.code = code;this.message = message;this.data = data;}public Msg() {}
}

编写一个 FileController,调用 FileServer 中的 upload 方法

@RestController
public class FileController {@AutowiredFileServer fileServer;@RequestMapping(value = "/upload",method = RequestMethod.POST)// 这里接收到的 file 名称是前端传递过来的文件参数名称public Msg uploadFile(@RequestParam("file") MultipartFile multipartFile){try {String filePath = fileServer.upload(multipartFile);return Msg.success().add("fileUrl",filePath);} catch (IOException e) {e.printStackTrace();}return Msg.error();}
}

然后前端通过 post 方式调用 /upload 接口,同时传递文件过来。
前端代码如下,使用了 ElementUI 中的文件上传组件

<template><div><el-upload class="upload-demo" drag action="/upload" multiple><i class="el-icon-upload"></i><div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div></el-upload></div>
</template>

运行效果:

登录腾讯云控制台,访问对象存储模块,查看 javaUpload 文件夹下的内容

可以看到文件成功上传到云端

java文件上传到腾讯云COS相关推荐

  1. 腾讯云对象存储的完整教程,java将文件上传到腾讯云上后返回可以访问的连接

    先前使用的是七牛云,是挺好用的,但是七牛对于测试域名有一个月的时间限制.测试域名失效后上传的图片等文件就不能访问了.但是腾讯云每个注册的账户有50G的对象存储的空间.而且没有时间限制.所以就采用腾讯的 ...

  2. 拉取ftp服务器上的文件_winscp和云服务器,2步实现winscp将文件上传到腾讯云Linux云服务器...

    WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议,它的主要功能就是在本地与远程计算机间安全的复制文件.与使用FTP上传代码相比,通过WinSCP可以直接使 ...

  3. 微信小程序视频图片上传到腾讯云COS对象储存

    配置好腾讯云账号 下载对应SDK引入使用,这里提供实践代码. let COS = require('./utils/cos-wx-sdk-v5'); //签名生成配置数,可自行生成,或者后台处理好给你 ...

  4. 图片上传到腾讯云COS小案例

    一.安装扩展包 composer require "overtrue/laravel-filesystem-cos" 二. 修改配置文件 config/filesystems.ph ...

  5. 如何将本地文件上传到腾讯云服务器(多图)

    概述 最近在腾讯云秒杀活动买了3年 1核2G 标准型S5 win2016 服务器,不知道如何上传文件到服务器,试了下服务器的下载速度,只有可怜的十几k,在服务器下载安装是不现实的.后来发现直接在本地电 ...

  6. Java导出Excel文档(poi),并上传到腾讯云对象存储服务器

    需求 后台生成周报月报季报年报Excel,将文件下载链接推送给对应客户 开发思路: 1.根据选定日期生成周报,月报,季报,年报数据 2.将这些数据报告生成Excel表格 3.把生成的文件上传到腾讯云对 ...

  7. 上传excel腾讯云服务器,使用SpringBoot上传文件到腾讯云

    最近在做一个项目,涉及到腾讯云上传文件/图片到服务器,为了图方便并且提升访问速度,想着上传到腾讯云存储桶是一个不错的选择.腾讯云存储桶的创建可见我之前的文章. 当然存储桶里面不仅可以存图片,也可以存储 ...

  8. java文件上传到云服务器,java文件上传到云服务器

    java文件上传到云服务器 内容精选 换一换 当用户拥有Linux操作系统的外部镜像文件,且类型及操作系统符合外部镜像文件格式和操作系统类型要求时,用户可以将外部镜像文件创建为Linux系统盘镜像. ...

  9. html5 dzzxjbd cn,UEditor实现单张图片上传至腾讯云(对象存储服务)功能(html5

    UEditor文件上传默认只支持后端语音,因为项目是前后端分离开发,所以需要前端自行实现图片上传. 这里是直接修改的 ueditor/ueditor.all.js文件 ueditor.all.js中找 ...

最新文章

  1. java面试常问问题(中级及以下工程师)
  2. mysql数据库显示问号_mysql数据库中文显示问号
  3. java源文件编译成jar_从源文件和JAR文件构建Java代码模型
  4. iframe去掉滚动条
  5. CompletableFuture详解~思维导图
  6. dsp怪胎_我是如何发现内心怪胎的
  7. 关于直播,所有的技术细节都在这里了(3)《转载》
  8. 此流上不支持超时。_10分钟了解线程池,阿里再也不担心我线程池资源耗尽了...
  9. 懒人神器——新手必备的图片后期处理软件
  10. yum安装mysql和mysql源,配置mysql
  11. DPDK Release 20.11
  12. 汽车颗粒物排放对环境和健康的影响及政府监管策略
  13. html静态页面图书馆管理,静态页面管理
  14. C - Pizza Cutter Gym - 101908C
  15. golang设计模式——结构模式
  16. 商标变更的重要性不及时变更的损失
  17. 【C++】IO库 : IO类,文件输入输出,string流
  18. 蓝牙解锁AutoLock 1.0.2 Mac中文版 (蓝牙WiFi解锁工具)
  19. 基于PHP语言Laravel+Layui后台代码生成工具
  20. dig命令命令常见用法

热门文章

  1. JUnit二(断言Asserts)
  2. 二叉树的应用之根据序列确定二叉树
  3. AD mark点设置
  4. 1-服务器的基本概念与初识Ajax
  5. 原生CSS input样式美化
  6. 微信小程序小案例——简单数据增删改查模拟
  7. [RK3288][Android6.0] 设置中通过Sensor旋转显示画面小结
  8. 苹果的heic格式图片怎么转换成jpg
  9. 店宝宝:拼多多如何一战成名
  10. code epi 光场_一种基于EPI的光场图像超分辨的方法与流程