亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java使用OSS實(shí)現(xiàn)上傳文件功能

 更新時(shí)間:2024年01月11日 08:43:26   作者:橡皮筋兒  
這篇文章主要為大家詳細(xì)介紹了Java如何使用OSS實(shí)現(xiàn)上傳文件功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下

1.準(zhǔn)備OSS

  • 訪問阿里云官網(wǎng),注冊(cè)并登錄賬戶(支付寶方便一些,順便沖點(diǎn)錢)
  • 在產(chǎn)品分類中,找到阿里云oss
  • 然后創(chuàng)建一個(gè)bucket

2.使用OSS(上傳文件)

2.1在阿里云網(wǎng)站導(dǎo)出阿里云頒發(fā)的 id 和 秘鑰

2.2導(dǎo)入maven坐標(biāo)

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

2.3進(jìn)入阿里云oss的學(xué)習(xí)路徑,找到對(duì)應(yīng)java操作的代碼

2.3.1首先創(chuàng)建配置文件,將秘鑰等信息進(jìn)行配置

#服務(wù)端口
server.port=8002
#服務(wù)名
spring.application.name=service-oss

#環(huán)境設(shè)置:dev、test、prod
spring.profiles.active=dev

#阿里云 OSS
#不同的服務(wù)器,地址不同
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
aliyun.oss.file.keyid=自己的keyid
aliyun.oss.file.keysecret=自己的keysecret
#bucket可以在控制臺(tái)創(chuàng)建,也可以使用java代碼創(chuàng)建
aliyun.oss.file.bucketname=自己創(chuàng)建的bucket名字

2.3.2創(chuàng)建一個(gè)工具類,將配置的屬性注入到容器中

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實(shí)現(xiàn)類代碼(文件上傳)

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);
        // 創(chuàng)建OSSClient實(shí)例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 填寫本地文件的完整路徑。
        // 如果未指定本地路徑,則默認(rèn)從示例程序所屬項(xiàng)目對(duì)應(yīng)本地路徑中上傳文件流。
        InputStream inputStream;
        try {
            inputStream = multipartFile.getInputStream();

            //參數(shù)一:依次填寫B(tài)ucket名稱
            // 參數(shù)二:文件名稱,或Object完整路徑(例如exampledir/exampleobject.txt)。Object完整路徑中不能包含Bucket名稱。
            // 參數(shù)三:輸入流
            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 {
            // 關(guān)閉OSSClient。
            ossClient.shutdown();
        }
        return null;
    }
}

2.3.4創(chuàng)建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

實(shí)現(xiàn)將對(duì)應(yīng)訪問地址進(jìn)行正則匹配轉(zhuǎn)發(fā)

3.1將監(jiān)聽端口改為81(防止沖突)

3.2配置轉(zhuǎn)發(fā)列表

server {
        listen       9001;
		server_name  localhost;
#代表帶有eduservice路徑的請(qǐng)求都走h(yuǎn)ttp://localhost:8001
        location ~ /eduservice/ {
            proxy_pass http://localhost:8001;
        }
#代表帶有eduoss的請(qǐng)求都走h(yuǎn)ttp://localhost:8002		
		location ~ /eduoss/ {
            proxy_pass http://localhost:8002;
        }
    }

4.結(jié)果

此時(shí)將前端的訪問接口改為9001,即可實(shí)現(xiàn)下圖功能

從而實(shí)現(xiàn)功能不同的請(qǐng)求訪問不同的服務(wù)器

以上就是Java使用OSS實(shí)現(xiàn)上傳文件功能的詳細(xì)內(nèi)容,更多關(guān)于Java OSS上傳文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot項(xiàng)目啟動(dòng)打包報(bào)錯(cuò)類文件具有錯(cuò)誤的版本 61.0, 應(yīng)為 52.0的解決方法

    SpringBoot項(xiàng)目啟動(dòng)打包報(bào)錯(cuò)類文件具有錯(cuò)誤的版本 61.0, 應(yīng)為 52.0的解決

    這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目啟動(dòng)打包報(bào)錯(cuò)類文件具有錯(cuò)誤的版本 61.0, 應(yīng)為 52.0的解決方法,文中有詳細(xì)的排查過程和解決方法,通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 解決在Gradle/IDEA中無法正常使用readLine的問題原因

    解決在Gradle/IDEA中無法正常使用readLine的問題原因

    這篇文章主要介紹了在Gradle/IDEA中無法正常使用readLine的解決方法,原因是由于Gradle的標(biāo)準(zhǔn)輸入默認(rèn)并不與系統(tǒng)標(biāo)準(zhǔn)輸入綁定,需手動(dòng)設(shè)置,需要的朋友可以參考下
    2021-12-12
  • java實(shí)現(xiàn)word文件轉(zhuǎn)html文件

    java實(shí)現(xiàn)word文件轉(zhuǎn)html文件

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)word文件轉(zhuǎn)html文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java并發(fā)編程之阻塞隊(duì)列詳解

    Java并發(fā)編程之阻塞隊(duì)列詳解

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)編程之阻塞隊(duì)列,什么是阻塞隊(duì)列?主要的阻塞隊(duì)列及其方法介紹,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Mybatis入門教程(四)之mybatis動(dòng)態(tài)sql

    Mybatis入門教程(四)之mybatis動(dòng)態(tài)sql

    這篇文章主要介紹了Mybatis入門教程(四)之mybatis動(dòng)態(tài)sql的相關(guān)資料,涉及到動(dòng)態(tài)sql及動(dòng)態(tài)sql的作用知識(shí),本文介紹的非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 如何使用Spring工具類動(dòng)態(tài)匹配url

    如何使用Spring工具類動(dòng)態(tài)匹配url

    這篇文章主要介紹了如何使用Spring工具類動(dòng)態(tài)匹配url,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 詳解Spring?@Profile注解的使用和源碼解析

    詳解Spring?@Profile注解的使用和源碼解析

    這篇文章主要將通過源碼帶大家深入了解一下Spring中@Profile注解的原理與使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • MyBatis-Plus實(shí)現(xiàn)公共字段自動(dòng)填充功能詳解

    MyBatis-Plus實(shí)現(xiàn)公共字段自動(dòng)填充功能詳解

    在開發(fā)中經(jīng)常遇到多個(gè)實(shí)體類有共同的屬性字段,這些字段屬于公共字段,也就是很多表中都有這些字段,能不能對(duì)于這些公共字段在某個(gè)地方統(tǒng)一處理,來簡(jiǎn)化開發(fā)呢?MyBatis-Plus就提供了這一功能,本文就來為大家詳細(xì)講講
    2022-08-08
  • 深入理解Spring MVC概要與環(huán)境配置

    深入理解Spring MVC概要與環(huán)境配置

    本篇文章主要介紹了深入理解Spring MVC概要與環(huán)境配置 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • java web圖片上傳和文件上傳實(shí)例

    java web圖片上傳和文件上傳實(shí)例

    本篇文章主要介紹了java web圖片上傳和文件上傳實(shí)例,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-11-11

最新評(píng)論