SpringBoot 가 아 리 클 라 우 드 의 OSS 대상 저장 소 에 사진 을 올 리 는 것 을 자세히 알 수 있 습 니 다.
12001 단어 SpringBoot업로드아 리 운OSS
위의 절 차 를 완성 한 후 다음 단 계 를 누 르 면 항목 을 만 듭 니 다.
생 성 완료 후 pom.xml 파일 을 수정 하고 아 리 클 라 우 드 oss 의존 도 를 추가 합 니 다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
프로필 을 수정 하고 프로필 접미사 이름 을 yml 형식의 프로필 로 변경 하 며 아 리 클 라 우 드 oss 를 매개 변수 로 설정 합 니 다.
server:
port: 8088
#
aliyun:
oss:
endpoint:
accessKeyId:
accessKeySecret:
bucketName:
위의 매개 변 수 는 우리 가 먼저 아 리 클 라 우 드 홈 페이지 에 들 어가 자신의 콘 솔 에 로그 인하 고 들 어 갑 니 다.네모 난 상자 에 yml 설정 파일 의 bucketName 을 만 듭 니 다.
들 어가 기 를 누 르 면 외부 네트워크 접근 주 소 를 볼 수 있 습 니 다.이 주 소 를 yml 설정 파일 의 endpoint 에 입력 하 십시오.
프로필 사진 클릭,AccessKey 관리 선택
AccessKey 계속 사용 선택
AccessKey 만 들 기
생 성 성공,yml 설정 파일 의 accessKeyId,accessKeySecret,해당 위치 입력
util(oss 도구 류 포함)폴 더 를 만 들 고 Oss Util 클래스 를 만 듭 니 다.Controller 폴 더 를 만 들 고 Oss Controller 파일 을 만 듭 니 다.
Oss Util 류
package com.example.ossdemo.util;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.*;
/**
* OSS
*/
@Component
public class OssUtil {
//--------- ----------
protected static final Logger log = LoggerFactory.getLogger(OssUtil.class);
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
//
private String filedir = "my_file/";
/**
* 1、
* @param file
* @return URL
*/
public String uploadFile(MultipartFile file) {
String fileUrl = uploadImg2Oss(file);
String str = getFileUrl(fileUrl);
return str.trim();
}
/**
* 1、 ( ( ))
* @param file
* @return URL
*/
public String uploadFile(MultipartFile file,String fileName) {
try {
InputStream inputStream = file.getInputStream();
this.uploadFile2OSS(inputStream, fileName);
return fileName;
}
catch (Exception e) {
return " ";
}
}
/**
* 2、
* @param fileList
* @return URL,
*/
public String uploadFile(List<MultipartFile> fileList) {
String fileUrl = "";
String str = "";
String photoUrl = "";
for(int i = 0;i< fileList.size();i++){
fileUrl = uploadImg2Oss(fileList.get(i));
str = getFileUrl(fileUrl);
if(i == 0){
photoUrl = str;
}else {
photoUrl += "," + str;
}
}
return photoUrl.trim();
}
/**
* 3、
* @param fileUrl
* @return URL
*/
public String getFileUrl(String fileUrl) {
if (fileUrl !=null && fileUrl.length()>0) {
String[] split = fileUrl.split("/");
String url = this.getUrl(this.filedir + split[split.length - 1]);
return url;
}
return null;
}
//
private String getShortUrl(String url) {
String[] imgUrls = url.split("\\?");
return imgUrls[0].trim();
}
// url
private String getUrl(String key) {
// URL 20 3600l* 1000*24*365*20
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 20);
// URL
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
URL url = ossClient.generatePresignedUrl(bucketName, key, expiration);
if (url != null) {
return getShortUrl(url.toString());
}
return null;
}
//
private String uploadImg2Oss(MultipartFile file) {
//1、 20M
if (file.getSize() > 1024 * 1024 *20) {
return " ";
}
String fileName = file.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf(".")).toLowerCase(); //
String uuid = UUID.randomUUID().toString();
String name = uuid + suffix;
try {
InputStream inputStream = file.getInputStream();
this.uploadFile2OSS(inputStream, name);
return name;
}
catch (Exception e) {
return " ";
}
}
// ( )
private String uploadFile2OSS(InputStream instream, String fileName) {
String ret = "";
try {
// Object Metadata
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(instream.available());
objectMetadata.setCacheControl("no-cache");
objectMetadata.setHeader("Pragma", "no-cache");
objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf("."))));
objectMetadata.setContentDisposition("inline;filename=" + fileName);
//
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
PutObjectResult putResult = ossClient.putObject(bucketName, filedir + fileName, instream, objectMetadata);
ret = putResult.getETag();
} catch (IOException e) {
log.error(e.getMessage(), e);
} finally {
try {
if (instream != null) {
instream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return ret;
}
private static String getcontentType(String FilenameExtension) {
if (FilenameExtension.equalsIgnoreCase(".bmp")) {
return "image/bmp";
}
if (FilenameExtension.equalsIgnoreCase(".gif")) {
return "image/gif";
}
if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
FilenameExtension.equalsIgnoreCase(".jpg") ||
FilenameExtension.equalsIgnoreCase(".png")) {
return "image/jpeg";
}
if (FilenameExtension.equalsIgnoreCase(".html")) {
return "text/html";
}
if (FilenameExtension.equalsIgnoreCase(".txt")) {
return "text/plain";
}
if (FilenameExtension.equalsIgnoreCase(".vsd")) {
return "application/vnd.visio";
}
if (FilenameExtension.equalsIgnoreCase(".pptx") ||
FilenameExtension.equalsIgnoreCase(".ppt")) {
return "application/vnd.ms-powerpoint";
}
if (FilenameExtension.equalsIgnoreCase(".docx") ||
FilenameExtension.equalsIgnoreCase(".doc")) {
return "application/msword";
}
if (FilenameExtension.equalsIgnoreCase(".xml")) {
return "text/xml";
}
//PDF
if (FilenameExtension.equalsIgnoreCase(".pdf")) {
return "application/pdf";
}
return "image/jpeg";
}
}
OssController 클래스
package com.example.ossdemo.controller;
import com.example.ossdemo.util.OssUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/oss")
public class OssController {
@Autowired
OssUtil ossUtil; // OssUtil
@PostMapping("/uploadfile")
public Object fileUpload(@RequestParam("file") MultipartFile file)
{
try {
String url = ossUtil.uploadFile(file); // OSS
Map<String, Object> returnbody = new HashMap<>();
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("url", url);
returnbody.put("data",returnMap);
returnbody.put("code","200");
returnbody.put("message"," ");
return returnbody;
}
catch (Exception e) {
Map<String, Object> returnbody = new HashMap<>();
returnbody.put("data",null);
returnbody.put("code","400");
returnbody.put("message"," ");
return returnbody;
}
}
}
postman 으로 요청 하기이렇게 하면 아 리 운 OSS 에 파일 을 올 릴 수 있 습 니 다.
그리고 이 항목 에 대해 모 르 시 면 밑 에 메 시 지 를 남 겨 주세요.답장 을 보 세 요.소스 코드 를 원 하 는 동료 에 게 소스 코드 를 코드 클 라 우 드 에 두 고 직접 가 져 오 겠 습 니 다!
프로젝트 코드 클 라 우 드 주소
총결산
여기 서 SpringBoot 가 아 리 클 라 우 드 에 올 린 OSS 대상 저장 소 에 대한 자세 한 내용 을 소개 합 니 다.더 많은 SpringBoot 가 아 리 클 라 우 드 의 OSS 내용 을 올 리 려 면 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.