Java 实现OSS文件上传中间件

  Java 实现阿里云OSS文件上传

  首先maven包

  

  
        
            com.aliyun.oss
            aliyun-sdk-oss
            2.2.1
        
    

之后配置文件

oss:
  address: oss-cn-beijing.aliyuncs.com/
  accessKey: 
  accessSecret: 
  bucketName: weinuoqinggan
  filePath: picture/

我用的springboot的yml文件 然后直接采取注解读取 注入到spring容器中

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 
 * @author 阿里文件上传OSS
 */
@Component
@ConfigurationProperties(prefix = "oss")
@Data
public class AliOssConfig {

	private String address;

	private String accessKey;

	private String accessSecret;

	private String bucketName;

	private String filePath;

}

最后就是我们的文件上传工具类了

import com.aliyun.oss.OSSClient;
import com.feeling.core.config.AliOssConfig;
import com.feeling.core.util.LogUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.ByteArrayInputStream;
import java.util.Date;
import java.util.UUID;

/**
 * 阿里云OSS文件上传
 *
 */
@Component
public class AliOssUploadServer {
	
	protected static final Logger logger = LogUtils.getPlatformLogger();

	@Autowired
	private AliOssConfig aliOssConfig;
	
	private static final String HOME_FILE="picture/";//相对路径
	
	public String fileOssUpload(MultipartFile file){
		String reqUrl="";
		String endPoint=aliOssConfig.getAddress();
		String accessKey=aliOssConfig.getAccessKey();
		String accessSecret=aliOssConfig.getAccessSecret();
		OSSClient client = new OSSClient(endPoint, accessKey, accessSecret);
		String bucket=aliOssConfig.getBucketName();
		//获取文件后缀名
		String fileType = StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
		//文件相对路径+文件名.文件类型
		String fileName=HOME_FILE.concat(UUID.randomUUID().toString()).concat(".").concat(fileType);
		try {
			//时间戳
			Date expire = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
			//文件上传
			client.putObject(bucket, fileName, new ByteArrayInputStream(file.getBytes()));
			//获取文件路径
			reqUrl=client.generatePresignedUrl(bucket, fileName, expire).toString();
			//截取文件多余参数
			reqUrl = reqUrl.substring(0,reqUrl.indexOf("?"));
		} catch (Exception e) {
			logger.error("aliOssUpload Fail:"+e.getMessage());
			return reqUrl;
		}finally{
			client.shutdown();
		}
		return reqUrl;
	}
}

测试

Java 实现OSS文件上传中间件_第1张图片

返回值

Java 实现OSS文件上传中间件_第2张图片

最后到oss的桶里去看看存在不存在

Java 实现OSS文件上传中间件_第3张图片

大功告成!!!

你可能感兴趣的:(随笔)