admin管理员组

文章数量:1794759

Access key id should not be null or empty.

Access key id should not be null or empty.

学习用阿里云oos存储文件时出现的错误 1.我是在配置文件上写了key等信

aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs aliyun.oss.file.keyid=******** aliyun.oss.file.keysecret=************* aliyun.oss.file.bucketname=guli-edu-zky

2然后用了工具类获取

@Component public class ConstantPropertiesUtils implements InitializingBean{ //读取配置文件内容 @Value("${aliyun.oss.file.endpoint}") private String endpoint; @Value("${aliyun.oss.file.keyid}") private String keyId; @Value("${aliyun.oss.file.keysecret}") private String keySecret; @Value("${aliyun.oss.file.bucketname}") private String bucketName; //定义公开静态常量 public static String END_POIND; public static String Access_KEY_ID; public static String ACCESS_KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { END_POIND = endpoint; ACCESS_KEY_ID = keyId; ACCESS_KEY_SECRET = keySecret; BUCKET_NAME = bucketName; } }

问题出在这,我忘加@Component注解,这样就没有把他交给spring管理,他就不能帮我执行接口中的方法,所以拿不到keyId 实现InitializingBean接口,继承该接口的Bean在初始化完成后,会执行重写的afterPropertiesSet()方法 3 后面没错了,记录一下学习过程 Controller里

@RestController @RequestMapping("/update") @CrossOrigin public class OssUpdateFileController { @Autowired private OssUpdateFileService service; //获取上传图片路径 @PostMapping public R updateFile(MultipartFile file) { String url=service.getFileUrl(file); return R.ok().data("url",url); } }

4serviceImpl,因为这里要用到那些keyid,所以把这些数据放到util里面,

@Service public class OssUpdateFileServiceImpl implements OssUpdateFileService{ /* 获取上传图片路径 * @see com.guli.service.OssUpdateFileService#getFileUrl(org.springframework.web.multipart.MultipartFile) */ @Override public String getFileUrl(MultipartFile file) { // Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint =ConstantPropertiesUtils.END_POIND; // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 ram.console.aliyun 创建。 String accessKeyId =ConstantPropertiesUtils.ACCESS_KEY_ID; String accessKeySecret =ConstantPropertiesUtils.ACCESS_KEY_SECRET; String bucketName=ConstantPropertiesUtils.BUCKET_NAME; try { // 创建OSS实例。 OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret); //获取上传文件输入流 InputStream inputStream = file.getInputStream(); //获取文件名称 String fileName = file.getOriginalFilename(); //1 在文件名称里面添加随机唯一的值 String uuid = UUID.randomUUID().toString().replaceAll("-",""); // yuy76t5rew01.jpg fileName = uuid+fileName; //2 把文件按照日期进行分类 //获取当前日期 // 2019/11/12 String datePath = new DateTime().toString("yyyy/MM/dd"); //拼接 // 2019/11/12/ewtqr313401.jpg fileName = datePath+"/"+fileName; //调用oss方法实现上传 //第一个参数 Bucket名称 //第二个参数 上传到oss文件路径和文件名称 aa/bb/1.jpg //第三个参数 上传文件输入流 ossClient.putObject(bucketName,fileName,inputStream); // 关闭OSSClient。 ossClient.shutdown(); //把上传之后文件路径返回 //需要把上传到阿里云oss路径手动拼接出来 // edu-guli-1010.oss-cn-beijing.aliyuncs/01.jpg String url = ""+bucketName+"."+endpoint+"/"+fileName; return url; }catch(Exception e) { e.printStackTrace(); return null; } } }

本文标签: KEYAccessidemptynull