访问服务器 request.getheader(origin)为null_Spring Boot整合阿里OSS文件储存服务器详细教程...

本文详述了如何使用Spring Boot集成阿里云OSS服务,包括配置文件设置、Util工具类编写及上传接口实现,同时提供了测试步骤和注意事项。
摘要由CSDN通过智能技术生成

一、准备工作
开发工具idea,jdk1.8,测试工具 postman 注册阿里云服务器并创建oss储存库,
创建Spring boot空项目

二、
引入pom.xml

org.springframework.boot            spring-boot-starter-web        com.aliyun.oss            aliyun-sdk-oss            2.8.1com.alibaba            fastjson            1.2.41

三、
1.在配置文件中application.yml配置oss的仓库名和访问路径前缀
bucket为仓库名
preUrl为访问前缀
咱们没有配置端口所以默认端口8080

4f6d1a162a20ffc4c005f092d60fbda2.png

2.创建config.properties
endpoint为阿里云地址
accessKeyId为OSS的K
accessKeySecret为OSS的V
注意:生成K,V之后注意保存,因为这个accessKeySecret只显示一次,最好下载保存一下,以免忘记

1f18656c4da09cd7612568d1acff99ab.png

四、引入我写好的Util
1.JsonResult 封装好的返回类型

package com.file.util;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.commons.beanutils.BeanMap;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.alibaba.fastjson.TypeReference;public class JsonResult {public static Map RetJsonPage(int code, String msg, Object data, String[] field) {Map RetMap = new HashMap<>();RetMap.put("code", code);RetMap.put("msg", msg);if (null == data) {RetMap.put("data", "");} else {RetMap.put("data", FilterMap(data, field));// RetMap.put("data", data);}return RetMap;}private static Map FilterMap(Object data, String[] field) {String[] arr = { "pageNum", "pageSize", "total", "list", "pages" };Map RetMap = new HashMap<>();Map datamap = new BeanMap(data);if (null == field || field.length == 0) {field = arr;}for (int i = 0; i < arr.length; i++) {String key = arr[i];RetMap.put(key, datamap.get(key));}return RetMap;}public static Map RetJsone(int code, String msg, Object data) {Map RetMap = new HashMap<>();RetMap.put("code", code);RetMap.put("msg", msg);RetMap.put("data", data);return RetMap;}public static Object GetJsonVal(String str, String key) {Map mapTypes = JSON.parseObject(str);Map map = new HashMap();return ((JSONObject) mapTypes).getString(key);}public static List> GetJsonList(String str) {List> retmap = JSON.parseObject(str, new TypeReference>>() {});return retmap;}}

2.ResultCode 封装好的返回状态码

package com.file.util;public class ResultCode {/** 成功 */public static final int SUCCESS = 200; // "成功"/** 没有登录 */public static final int NOT_LOGIN = 400; // 没有登录"),/** 发生异常 */public static final int EXCEPTION = 401; // 发生异常"),/** 系统错误 */public static final int SYS_ERROR = 402; // 系统错误"),/** 参数错误 */public static final int PARAMS_ERROR = 403; // 参数错误 "),/** 不支持或已经废弃 */public static final int NOT_SUPPORTED = 410; // 不支持或已经废弃"),/** AuthCode错误 */public static final int INVALID_AUTHCODE = 444; // 无效的AuthCode"),/** 太频繁的调用 */public static final int TOO_FREQUENT = 445; // 太频繁的调用"),/** 未知的错误 */public static final int UNKNOWN_ERROR = 499; // 未知错误");public static final int BALANCE_NOT_ENOUGH = 601;/** 操作有误 */public static final int WRONG_OPERATION = 602;/** 文件过大 */public static final int FILE_TOO_LARGE = 604;/** 结果为空 */public static final int RES_NULL = 700; // 结果为空 ");/** code没有绑定活动 */public static final int ACT_NULL = 701; // code没有绑定活动 ");/** 更新失败 */public static final int UPDATE_FAIL = 702; // 更新失败 ");/** 接口限制 */public static final int API_LIMIT = 703; // 更新失败 ");/** 失败 */public static final int FAIL = 704; // 失败 ");}

3.封装好的OssUtil

package com.file.util;import org.springframework.web.multipart.MultipartFile;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.math.BigInteger;import java.security.MessageDigest;/** * 每个用户一个目录保存文件, 以md5为文件名保存文件避免用户上传重复文件 *  * @author ChenPantao * @date 2017年12月15日 */public class OssUtil {        public static String getIMGS(MultipartFile[] IMG_imgs , Long userid, String bucketName){        String imgs = "";        for(int i = 0 ;i

4.用于请求阿里云服务器的Oss

package com.file.util;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.PropertyResourceBundle;import java.util.ResourceBundle;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.multipart.MultipartFile;import com.aliyun.oss.OSSClient;import com.aliyun.oss.model.Bucket;import com.aliyun.oss.model.OSSObject;import com.aliyun.oss.model.ObjectMetadata;import com.aliyun.oss.model.PutObjectResult;public class Oss {private static final Logger LOG = LoggerFactory.getLogger(Oss.class);private static String ENDPOINT;private static String ACCESS_KEY_ID;private static String ACCESS_KEY_SECRET;// init static datasstatic {ResourceBundle bundle = PropertyResourceBundle.getBundle("config");ENDPOINT = bundle.containsKey("endpoint") == false ? "" : bundle.getString("endpoint");ACCESS_KEY_ID = bundle.containsKey("accessKeyId") == false ? "" : bundle.getString("accessKeyId");ACCESS_KEY_SECRET = bundle.containsKey("accessKeySecret") == false ? "" : bundle.getString("accessKeySecret");}private static final OSSClient getOSSClient() {return new OSSClient(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);}public static final boolean createBucket(String bucketName) {Bucket bucket = getOSSClient().createBucket(bucketName);return bucketName.equals(bucket.getName());}public static final void deleteBucket(String bucketName) {getOSSClient().deleteBucket(bucketName);LOG.info("删除" + bucketName + "Bucket成功");}public static final String uploadObject2OSS(File file, String bucketName, String diskName) {String resultStr = null;try {InputStream is = new FileInputStream(file);String fileName = file.getName();Long fileSize = file.length();ObjectMetadata metadata = new ObjectMetadata();metadata.setContentLength(is.available());metadata.setCacheControl("no-cache");metadata.setHeader("Pragma", "no-cache");metadata.setContentEncoding("utf-8");metadata.setContentType(getContentType(fileName));metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");// 上传文件PutObjectResult putResult = getOSSClient().putObject(bucketName, diskName + fileName, is, metadata);// 解析结果resultStr = putResult.getETag();} catch (Exception e) {LOG.error("上传阿里云OSS服务器异常." + e.getMessage(), e);}return resultStr;}public static final String uploadObject2OSS2(MultipartFile file, String bucketName, String diskName,String fileName) {String resultStr = null;try {InputStream is = file.getInputStream();ObjectMetadata metadata = new ObjectMetadata();metadata.setContentLength(is.available());metadata.setCacheControl("no-cache");metadata.setHeader("Pragma", "no-cache");metadata.setContentEncoding("utf-8");metadata.setContentType(getContentType(fileName));// 上传文件PutObjectResult putResult = getOSSClient().putObject(bucketName, diskName + fileName, is, metadata);// 解析结果resultStr = putResult.getETag();} catch (Exception e) {LOG.error("上传阿里云OSS服务器异常." + e.getMessage(), e);}return resultStr;}public static final String uploadString2OSS(String str, String fileName, String bucketName, String diskName) {String resultStr = null;try {byte[] content = str.getByte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值