阿里云OSS使用

1.准备OSS

  1. 访问阿里云官网,注册并登录账户(支付宝方便一些,顺便冲点钱)
  2. 在产品分类中,找到阿里云oss
  3. 然后创建一个bucket

2.使用OSS(上传文件)

2.1在阿里云网站导出阿里云颁发的 id 和 秘钥

2.2导入maven坐标

<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>

2.3进入阿里云oss的学习路径,找到对应java操作的代码

2.3.1首先创建配置文件,将秘钥等信息进行配置

#服务端口
server.port=8002
#服务名
spring.application.name=service-oss #环境设置:dev、test、prod
spring.profiles.active=dev #阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
aliyun.oss.file.keyid=自己的keyid
aliyun.oss.file.keysecret=自己的keysecret
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=自己创建的bucket名字

2.3.2创建一个工具类,将配置的属性注入到容器中

package com.gyb.eduoss.utils;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; /**
* @Author: 郜宇博
* @Date: 2021/9/30 14:54
*/
@Component
@ConfigurationProperties(prefix = "aliyun.oss.file")
@Data
public class AliyunOSSProUtil {
private String endpoint;
private String keyid;
private String keysecret;
private String bucketname; }

2.3.3编写java实现类代码(文件上传)

package com.gyb.eduoss.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.gyb.eduoss.service.OssService;
import com.gyb.eduoss.utils.AliyunOSSProUtil;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import java.io.IOException;
import java.io.InputStream; /**
* @Author: 郜宇博
* @Date: 2021/9/30 15:53
*/
@Service
public class OssServiceImpl implements OssService {
@Autowired
AliyunOSSProUtil aliyunOSSProUtil; @Override
public String uploadFileAvatar(MultipartFile multipartFile) {
//从工具类获取配置文件中的oss值
String endpoint = aliyunOSSProUtil.getEndpoint();
String accessKeyId = aliyunOSSProUtil.getKeyid();
String accessKeySecret = aliyunOSSProUtil.getKeysecret();
String bucketName = aliyunOSSProUtil.getBucketname();
System.out.println("endponit:"+endpoint);
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 填写本地文件的完整路径。
// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream;
try {
inputStream = multipartFile.getInputStream(); //参数一:依次填写Bucket名称
// 参数二:文件名称,或Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
// 参数三:输入流
String currentTime = String.valueOf(System.currentTimeMillis());
String currentDate = new DateTime().toString("yyyy/MM/dd");
String originalFileName = multipartFile.getOriginalFilename();
String fileName = currentDate+"/"+currentTime+originalFileName;
ossClient.putObject(bucketName,fileName, inputStream);
String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
return url; } catch (IOException e) {
e.printStackTrace();
}finally {
// 关闭OSSClient。
ossClient.shutdown();
}
return null;
}
}

2.3.4创建config类,防止传入文件为null

package com.gyb.eduoss.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver; /**
* @Author: 郜宇博
* @Date: 2021/10/2 00:21
*/
@Configuration
public class UploadConfig {
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setResolveLazily(true);
resolver.setMaxInMemorySize(40960);
//上传文件大小 5M 5*1024*1024
resolver.setMaxUploadSize(5 * 1024 * 1024);
return resolver;
}
}

3.配置Nginx反向代理(可以不配)

下载Nginx

实现将对应访问地址进行正则匹配转发

3.1将监听端口改为81(防止冲突)

3.2配置转发列表

server {
listen 9001;
server_name localhost;
#代表带有eduservice路径的请求都走http://localhost:8001
location ~ /eduservice/ {
proxy_pass http://localhost:8001;
}
#代表带有eduoss的请求都走http://localhost:8002
location ~ /eduoss/ {
proxy_pass http://localhost:8002;
}
}

4.结果

此时将前端的访问接口改为9001,即可实现下图功能

从而实现功能不同的请求访问不同的服务器

Java使用OSS实现上传文件的更多相关文章

  1. Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)

    Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...

  2. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  3. ASP.NET、JAVA跨服务器远程上传文件(图片)的相关解决方案整合

    一.图片提交例: A端--提交图片 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string u ...

  4. Java Miniui实现批量上传文件demo 201906221520

    可能需要的jar包: 需要miniui(类似easyui). Test2019062201.jsp <%@ page language="java" contentType= ...

  5. Selenium+java - 借助autolt完成上传文件操作

    写在前面: 上传文件是每个自动化测试同学会遇到,而且可以说是面试必考的问题,标准控件我们一般用sendkeys()就能完成上传,但是我们的测试网站的上传控件一般为自己封装的,用传统的上传已经不好用了, ...

  6. java的几种上传文件方法

    这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/commonsmultipartreso ...

  7. java 调用Spring接口上传文件及其他参数填充

    第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...

  8. 【java工具类】上传文件

    /**上传文件 * @param file 文件 * @param filePath 上传文件路径,不包含文件名 * @param fileName 新的文件名 * @return 返回一个路径名 * ...

  9. java spring mvc restful 上传文件

    spring mvc 配置文件 <bean class="com.baiyyy.yfz.core.RestfulHandlerMethodMapping" />     ...

  10. java实现sftp客户端上传文件夹的功能

    使用的jar: <dependencies> <dependency> <groupId>jsch</groupId> <artifactId&g ...

随机推荐

  1. Go语言常用标准库——json、文件操作、template、依赖管理及Go_module使用

    文章目录 Go语言之json Marshal函数 Unmarshal函数 Go语言之文件操作 打开和关闭文件 读取文件 file.Read() 基本使用 循环读取 bufio读取文件 ioutil读取 ...

  2. Dubbo3应用开发—Dubbo3注册中心(zookeeper、nacos、consul)的使用

    Dubbo3注册中心的使用 zookeeper注册中心的使用 依赖引入 <dependency> <groupId>org.apache.dubbo</groupId&g ...

  3. WebKit Insie: Active 样式表

    WebKit Inside: CSS 样式表的匹配时机介绍了当 HTML 页面有不同 CSS 样式表引入时,CSS 样式表开始匹配的时机.后续文章继续介绍 CSS 样式表的匹配过程,但是在匹配之前,首 ...

  4. 快速启动Stable Diffusion WebUI

    快速启动Stable Diffusion WebUI详情    产品文档   输入文档关键字查找   机器学习PAI 产品概述 快速入门 操作指南 准备工作 开通PAI并创建默认工作空间 开通并授权依 ...

  5. SVN: Could not resolve hostname 解决方法_

    svn 报错如下 org.tigris.subversion.javahl.ClientException: RA layer request failed svn: OPTIONS of '[你的s ...

  6. 运行 Python 脚本/代码的几种方式

    哈喽大家好,我是咸鱼 我们知道,python 脚本或者说 python 程序其实是一个包含了 python 代码的文件.要让它们实现特定功能,我们需要知道该如何运行(run)它 通过运行 python ...

  7. umich cv-6-1 循环神经网络基本知识

    这节课中介绍了循环神经网络的第一部分,主要介绍了循环神经网络的基本概念,vanilla循环网络架构,RNN的一些应用,vanilla架构的问题,更先进的rnn架构比如GRU和LSTM 循环神经网络基本 ...

  8. 【MISC】[MoeCTF 2022]cccrrc --crc32爆破

    附件下载下来为压缩包,需要密码,查看该压缩包的内容 此处发现里面四个txt文件均已被加密,但是每个txt的内容都只有四个字节,符合crc32爆破条件,直接上脚本: import binascii im ...

  9. dsBlog前后台博客系统

    博客简介:本博客采用Spring Boot + LayUI做为基础,进行的博客系统开发,与boot+vue相比,更为适合开发简单的系统,并且更容易上手,简单!高效!更易上手! Spring Boot ...

  10. 将ECharts图表插入到Word文档中

    @ 目录 在后端调用JS代码 准备ECharts库 生成Word文档 项目地址 库封装 本文示例 EChartsGen_DocTemplateTool_Sample 如何通过ECharts在后台生成图 ...