亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

發布時間:2020-10-27 22:52:57 來源:億速云 閱讀:329 作者:Leah 欄目:開發技術

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

啟動idea創建一個SpringBoot項目

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中
使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中
使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中
使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

將上面的步驟完成之后,點擊下一步創建項目

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

創建完成之后修改pom.xml文件,添加阿里云oss依賴

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

<dependency>
	<groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
  <optional>true</optional>
</dependency>

修改配置文件,將配置文件后綴名修改為yml類型的配置文件,并對阿里云oss進行參數的配置

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

server:
 port: 8088
# 阿里云存儲參數配置
aliyun:
 oss:
  endpoint: 
  accessKeyId: 
  accessKeySecret: 
  bucketName: 

上面的參數我們首先進入阿里云官網,登錄并進入自己的控制臺

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

創建一個,方框中就是yml配置文件中的bucketName

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

點擊進入就可以看見外網訪問地址,將這個地址填寫到yml配置文件中的endpoint

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

點擊頭像,選擇AccessKey管理

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

選擇繼續使用AccessKey

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

創建一個AccessKey

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

創建成功,yml配置文件中的accessKeyId,accessKeySecret,對應填入相應位置

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

創建一個util(里面放oss工具類)文件夾,里面創建一個OssUtil的類。再創建一個Controller文件夾,里面創建一個OssController的文件

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

OssUtil類

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("\\&#63;");
    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進行請求

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

這樣就可以將文件上傳到阿里云OSS啦

使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中

看完上述內容,你們掌握使用SpringBoot如何上傳圖片到阿里云的OSS對象存儲中的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

禹城市| 岑溪市| 宁蒗| 五家渠市| 上犹县| 扎囊县| 滨州市| 曲水县| 全椒县| 永年县| 淳化县| 和田县| 山西省| 南京市| 襄城县| 珠海市| 新宁县| 云浮市| 龙泉市| 扎兰屯市| 昌都县| 尚志市| 固始县| 阿尔山市| 长治市| 东台市| 绍兴市| 卢龙县| 六枝特区| 正阳县| 潞城市| SHOW| 稻城县| 芜湖县| 平罗县| 西林县| 普洱| 依安县| 梁平县| 苏尼特左旗| 綦江县|