阿里云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. LSP 链路状态协议

    转载请注明出处: 链路状态协议(Link State Protocol)是一种在计算机网络中用于动态计算路由的协议.它的主要作用是收集网络拓扑信息,为每个节点构建一个准确的网络图,并基于这些信息计算出 ...

  2. Python socket实现ftp文件下载服务

    简要 使用Python socket和多线程实现一个FTP服务下载.下面的示例是固定下载某一个任意格式文件. 仅仅为了展示如果使用socket和多线程进行文件下载 服务端代码 import socke ...

  3. 几句话了解元数据(Metadata)

    元数据就是关于数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置.历史数据.资源查找.文件记录等功能. 要理解元数据,首先要知道&quo ...

  4. 【createWrapper】根据条件类创建查询wrapper

    前几天写一个有几十个字段的查询wrapper,写得我心烦意乱.然后就琢磨了一下能不能只传一个条件类对像就能创建对应的wrapper.去看了下mybatis-plus的文档没看到合适的api,有一个创建 ...

  5. Nuxt.js 生成sitemap站点地图文件

    Nuxt.js 生成sitemap站点地图文件 背景介绍 ​ 使用nuxt框架生成静态文件支持SEO优化,打包之后需要生成一个 sitemap.xml 文件方便提交搜索引擎进行收录.官网有提供一个插件 ...

  6. buu pwn wp(持续更新)

    1.warmup_csaw_2016 main函数如下 __int64 __fastcall main(int a1, char **a2, char **a3) { char s[64]; // [ ...

  7. Android dumpsys介绍

    目录 一.需求 二.环境 三.相关概念 3.1 dumpsys 3.2 Binder 3.3 管道 四.dumpsys指令的使用 4.1 dumpsys使用 4.2 dumpsys指令语法 五.详细设 ...

  8. py2neo函数merge参数报错

    代码 a1 = Node("house", name='303') g.merge(a1) 执行报错 Primary label and primary key are requi ...

  9. YbtOJ 数位DP G.幸运666

    日常写点奇奇怪怪的乱搞做法 awa 这题跟前面几道数位 DP 的区别在于让求第 \(n\) 小的数. 虽然我不会求也不想学这个,但我们可以 binary search! 问题就转换为求 \([1,mi ...

  10. sql server 截断和收缩所有用户数据库日志--用游标循环所有正常状态的用户数据库

    在服务器运维活动中,我们经常需要做一项工具就是将好多年的用户数据库日志文件截断并收缩为最小,以节省大量的磁盘空间.当数据库只有一两个时可以手动操作,但数据库数量众多时,就需要采用sql脚本,批量化执行 ...