一、登陆华为云
https://www.huaweicloud.com/product/obs.html
二、进入控制台
三、创建桶
注意使用公共读否则别个访问不到
四、maven导入依赖
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java</artifactId>
<version>3.19.7</version>
</dependency>
五、获取sk、ak
六、java代码
@Service
public class ObsService {
private static final List<String> CONTENT_TYPES = Arrays.asList("image/jpeg", "image/gif","image/png");
private static final Logger LOGGER = LoggerFactory.getLogger(ObsService.class);
@Autowired
private ObsProperties obsProperties;
/**
* 文件上传
* @param file
* @return
*/
public ObsResult upload(MultipartFile file)
{
String contype=file.getContentType();
String originalFilename = file.getOriginalFilename();
String sub=originalFilename.substring(originalFilename.lastIndexOf("."),originalFilename.length());
if(!CONTENT_TYPES.contains(contype))
{
LOGGER.info("文件类型出错"+originalFilename);
return null;
}
try {
BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
if (bufferedImage == null) {
LOGGER.info("文件内容不合法" + originalFilename);
return null;
}
}catch (IOException e)
{
e.printStackTrace();
System.err.println("获取文件流失败");
}
//上传图片
InputStream in=null;
ObsClient obsClient = null;
try{
//获取图片名称,作为上传文件名参数
String objectKey = file.getOriginalFilename();
//获取流对象
in= file.getInputStream();
// 创建ObsClient实例
obsClient = new ObsClient(obsProperties.getAk(), obsProperties.getSk(), obsProperties.getEndPoint());
// 使用访问OBS
PutObjectResult putObjectResult = obsClient.putObject("college-date", objectKey, in);
//将图片信息封装起来,方便前端回显调用
String url=putObjectResult.getObjectUrl();
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", objectKey);
jsonObject.put("url", url);
return new ObsResult("文件上传成功!",jsonObject);
}catch (IOException e)
{
e.printStackTrace();
System.err.println("上传图片失败!");
}
finally {
try
{
if(in!=null)
{
in.close();
}
}catch (IOException e)
{
e.printStackTrace();
System.err.println("输出流关闭失败!");
}
try
{
if(obsClient!=null)
{
// 关闭obsClient
obsClient.close();
}
}catch (IOException e)
{
e.printStackTrace();
System.err.println("obs客户端流对象关闭失败!");
}
}
return null;
}
//文件下载
// public
}
@RestController
@RequestMapping("/obs")
public class ObsController {
@Autowired
private ObsService obsService;
@PostMapping("image")
public ResponseEntity<ObsResult> UploadImage(@RequestParam("file") MultipartFile file)
{
ObsResult result = obsService.upload(file);
if(StringUtils.isEmpty(result))
{
return ResponseEntity.badRequest().build();
}
return ResponseEntity.ok(result);
}
}
posman测试
更多精彩关注:Dillon博客