开发者社区> 问答> 正文

java如何通过uploadify上传到阿里云oss

已解决

正在学习后台开发,前端是ios,后台是java,想通过uploadify插件来将用户上传的图片保存到阿里云的OSS,表单数据保存到阿里云的RDS中,已经能保存到本地,请问具体该如何将图片上传到OSS,若不能用uploadify,那该如何上传,期待您的解答。

展开
收起
supercat_chao 2016-08-01 15:27:04 6242 0
2 条回答
写回答
取消 提交回答
  • 采纳回答

    通过ossclient上传。

    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();
                    }
                }
            }
    2019-07-17 20:02:11
    赞同 展开评论 打赏
  • 在阿里云搜索oss帮助文档,里面有介绍怎么用java后台调用oss接口:需要将阿里云提供的jar包导入你的项目中,然后将阿里云提供的代码放入你的项目中(代码中需要填入你在阿里云获得的key)

    2019-07-17 20:02:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载