springboot整合obs-华为云-鲲鹏技术-OBS-对象储存技术(上传文件/图片)

一、登陆华为云
https://www.huaweicloud.com/product/obs.html
二、进入控制台
springboot整合obs-华为云-鲲鹏技术-OBS-对象储存技术(上传文件/图片)_第1张图片
三、创建桶
在这里插入图片描述
springboot整合obs-华为云-鲲鹏技术-OBS-对象储存技术(上传文件/图片)_第2张图片

注意使用公共读否则别个访问不到

四、maven导入依赖

        <dependency>
            <groupId>com.huaweicloud</groupId>
            <artifactId>esdk-obs-java</artifactId>
            <version>3.19.7</version>
        </dependency>

springboot整合obs-华为云-鲲鹏技术-OBS-对象储存技术(上传文件/图片)_第3张图片
sdk

五、获取sk、ak
springboot整合obs-华为云-鲲鹏技术-OBS-对象储存技术(上传文件/图片)_第4张图片

六、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测试
springboot整合obs-华为云-鲲鹏技术-OBS-对象储存技术(上传文件/图片)_第5张图片

更多精彩关注:Dillon博客

你可能感兴趣的:(第三方技术,java,java)