当前位置: 首页 > news >正文

大事件项目记录13-接口开发-补充

一、文件上传接口(本地测试):

        使用本地的方式,暂时存储文件,测试上传文件接口无误:

        FileUploadController.java:

@RestController
public class FileUploadController {@PostMapping("/upload")public Result<String> upload(MultipartFile file) throws IOException {//把文件的内容存储到本地磁盘String originalFilename = file.getOriginalFilename();//保证文件名唯一,防止文件覆盖String filename = UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));file.transferTo(new File("C:\\Users\\aazhyyi\\Desktop\\file\\"+filename));return Result.success("test");}
}

        使用Postman测试:

二、使用阿里云OSS存储文件:

        阿里云对象存储OSS(0bject Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

具体使用方式如下:

1.引入Maven坐标:

    <!--阿里云OSS依赖坐标--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency>
<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version>
</dependency>
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.3</version>
</dependency>

2.新建工具类AliOssUtil.java:

package org.azhyyi.utils;import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProvider;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;import java.io.FileInputStream;
import java.io.InputStream;public class AliOssUtil {// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。private static final String ENDPOINT = "https://oss-cn-chengdu.aliyuncs.com";private static final String ACCESS_KEY_ID = "XXXX";private static final String ACCESS_KEY_SECRET = "XXXX";// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。private static final CredentialsProvider CREDENTIALSPROVIDER = new DefaultCredentialProvider(ACCESS_KEY_ID, ACCESS_KEY_SECRET);// 填写Bucket名称,例如examplebucket。private static final String BUCKETNAME = "XXX";// 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou。private static final String REGION = "cn-chengdu";public static String uploadfile(String objectName, InputStream in) throws Exception {// 创建OSSClient实例。// 当OSSClient实例不再使用时,调用shutdown方法以释放资源。ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);OSS ossClient = OSSClientBuilder.create().endpoint(ENDPOINT).credentialsProvider(CREDENTIALSPROVIDER).clientConfiguration(clientBuilderConfiguration).region(REGION).build();String url = "";try {// 填写字符串。String content = "Hello OSS,你好世界";// 创建PutObjectRequest对象。PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKETNAME, objectName,in);// 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。// ObjectMetadata metadata = new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传字符串。PutObjectResult result = ossClient.putObject(putObjectRequest);url = "http://"+BUCKETNAME+"."+ENDPOINT.substring(ENDPOINT.lastIndexOf("/")+1)+"/"+objectName;} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}return url;}
}

3.在FileUploadController.java中进行调用工具类即可:

@RestController
public class FileUploadController {@PostMapping("/upload")public Result<String> upload(MultipartFile file) throws Exception {//把文件的内容存储到本地磁盘String originalFilename = file.getOriginalFilename();//保证文件名唯一,防止文件覆盖String filename = UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));
//        file.transferTo(new File("C:\\Users\\aazhyyi\\Desktop\\file\\"+filename));String url = AliOssUtil.uploadfile(filename, file.getInputStream());return Result.success(url);}
}

4.使用Postman进行测试:

并且在阿里云OSS也能看到上传的图片。

 至此,大事件项目所有接口已经开发完毕。


文章转载自:
http://besieged.dxwdwl.cn
http://bakeshop.dxwdwl.cn
http://bushwalking.dxwdwl.cn
http://abiotrophy.dxwdwl.cn
http://carborane.dxwdwl.cn
http://chogh.dxwdwl.cn
http://adrenocorticosteroid.dxwdwl.cn
http://bedel.dxwdwl.cn
http://admixture.dxwdwl.cn
http://biomathcmatics.dxwdwl.cn
http://cation.dxwdwl.cn
http://camion.dxwdwl.cn
http://boa.dxwdwl.cn
http://ate.dxwdwl.cn
http://chemosurgery.dxwdwl.cn
http://antilepton.dxwdwl.cn
http://arousal.dxwdwl.cn
http://achromatophil.dxwdwl.cn
http://captivate.dxwdwl.cn
http://byo.dxwdwl.cn
http://caseidin.dxwdwl.cn
http://beeline.dxwdwl.cn
http://apposable.dxwdwl.cn
http://brechtian.dxwdwl.cn
http://anglican.dxwdwl.cn
http://bhut.dxwdwl.cn
http://beanfeast.dxwdwl.cn
http://batfowl.dxwdwl.cn
http://boundless.dxwdwl.cn
http://autnumber.dxwdwl.cn
http://www.dtcms.com/a/262307.html

相关文章:

  • 深入剖析 Linux 内核网络核心:sock.c 源码解析
  • 现代 JavaScript (ES6+) 入门到实战(四):数组的革命 map/filter/reduce - 告别 for 循环
  • 数据挖掘、机器学习与人工智能:概念辨析与应用边界
  • 设计模式精讲 Day 18:备忘录模式(Memento Pattern)
  • FastAPI路由管理APIRouter实战指南
  • 广度优先搜索BFS(广搜)复习(c++)
  • 【智能协同云图库】智能协同云图库第三弹:基于腾讯云 COS 对象存储—开发图片模块
  • 电子计数跳绳原型
  • 如何撰写有价值的项目复盘报告
  • 深入剖析Nacos服务发现与注册,及如何基于LoadBalancer实现负载均衡
  • Tomcat 安装使用教程
  • 第10篇 图像语义分割和目标检测介绍
  • OpenCV 4.10.0 移植
  • Kafka与RabbitMQ相比有什么优势?
  • 第七节 矩阵键盘模块
  • MCP Chart Server服务本地部署案例
  • 咸虾米项目总结1--const用法
  • LeetCode Hot 100 最大子数组和
  • 推荐几本关于网络安全的书
  • 动态执行js
  • 系统架构设计师备考之架构设计专业知识
  • 软考 系统架构设计师系列知识点之杂项集萃(100)
  • 海量数据存储与分析:HBase、ClickHouse、Doris三款数据库对比
  • http相关网络问题面试怎么答
  • C++ 格式化输入输出
  • Vue中的v-if与emit事件传递:一个常见陷阱分析
  • swift-19-从OC到Swift、函数式编程
  • SpringSecurity6-oauth2-三方gitee授权-授权码模式
  • 鸿蒙 Swiper 组件解析:轮播交互与动画效果全指南
  • 疏通经脉: Bridge 联通逻辑层和渲染层