当前位置: 首页 > 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://www.lqws.cn/news/568027.html

相关文章:

  • 【如何实现分布式压测中间件】
  • 【更新至2024年】1996-2024年各省农村居民人均消费支出数据(无缺失)
  • JVM基础--JVM的组成
  • 如何将Excel表的内容转化为json格式呢?
  • SCAU期末笔记 - 操作系统 英文定义题
  • Linux 环境变量剖析
  • CNN, RNN, LSTM
  • 2.4 分层解耦(Spring的IOC和DI讲解)
  • Qt事件系统
  • 【innovus基础】手修drc之——金属跳层/修改线宽
  • H3C-路由器交换机-中继
  • Gemini-CLI:谷歌开源的命令行AI工具,重新定义开发者工作流
  • C++异常处理深度解析:标准库异常类与最佳实践
  • 可达性分析算法Test
  • 矩阵的逆 线性代数
  • rabbitmq springboot 有哪些配置参数
  • 打卡day57
  • WebRTC系列:(一)MacOS开发环境搭建(Vscode + Clangd)
  • Ubuntu开放mysql 3306端口
  • 现代 JavaScript (ES6+) 入门到实战(八):总结与展望 - 成为一名现代前端开发者
  • NLP随机插入
  • 复旦大学经济学院系统思考训练
  • MyBatis批量删除
  • [论文阅读]MISSRce
  • Elasticsearch 索引设计与性能优化实战指南
  • M1芯片最终oracle成功版本拉取方法及配置
  • 二叉树找到下一个中序遍历节点的思路
  • foreach、for in 和for of的区别
  • VMware报错问题解决记录
  • NAND Flash BCH和FTL