开发者社区> 问答> 正文

java.lang.RuntimeException: Unsupported algorithm: HmacSHA1

QQ_20161021152651

try {
            OSSClient client = new OSSClient(END_POINT, ACCESS_ID, ACCESS_KEY);
            System.out.println("come to create bucket name");
            boolean exist = client.doesBucketExist(BUCKETNAME);  
            System.out.println("exist is: "+exist);
            if (!exist) {  
                client.createBucket(BUCKETNAME);
            }  
            BucketInfo bucketInfo = client.getBucketInfo(BUCKETNAME);
            System.out.println("================================bucketInfo: "+bucketInfo);
//            //设置bucket的访问权限,public-read-write权限
//            client.setBucketAcl(BUCKETNAME, CannedAccessControlList.PublicRead);
            
            ByteArrayOutputStream out = new ByteArrayOutputStream();// 先读入内存
            byte[] b = new byte[512];
            int len;
            while ((len = is.read(b)) != -1) {
                out.write(b, 0, len);
            }
            
            String key = MD5Util.getMD5String(out.toByteArray());
            
            ObjectMetadata objectMeta = new ObjectMetadata();
            objectMeta.setContentLength(out.size());
            // 可以在metadata中标记文件类型
            if (StringUtils.isEmpty(name)) {
                name = "temp.png";
            }
            if(name.toLowerCase().contains(".png")) {
                objectMeta.setContentType("image/png");
                key += ".png";
            }else if(name.toLowerCase().contains(".gif")) {
                objectMeta.setContentType("image/gif");
                key += ".gif";
            }else {
                objectMeta.setContentType("image/jpeg");
                key += ".jpg";
            }

            
//            InputStream in = new ByteArrayInputStream(out.toByteArray());
            
            PutObjectResult result = client.putObject(BUCKETNAME, key, is, objectMeta);
//            System.out.println("result: "+result);
//            System.out.println("key: "+key);
            client.shutdown();
            if(result!=null){
                return key;
            }
            return null;
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            if(is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

展开
收起
qschain 2016-10-21 15:30:50 4845 0
2 条回答
写回答
取消 提交回答
    1. 加入bcprov-jdk14:1.57 jar包(也可以是别的版本)

    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk14</artifactId>
    <version>1.57</version>

    1. 上传文件前或者容器初始化时加入以下代码:
      Security.addProvider(new BouncyCastleProvider());
    2019-07-17 20:18:36
    赞同 展开评论 打赏
  • 2019-07-17 20:18:36
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
OpenCrypto Unchaining the Java 立即下载
Java Your(Next) 立即下载
低代码开发师(初级)实战教程 立即下载