正在学习后台开发,前端是ios,后台是java,想通过uploadify插件来将用户上传的图片保存到阿里云的OSS,表单数据保存到阿里云的RDS中,已经能保存到本地,请问具体该如何将图片上传到OSS,若不能用uploadify,那该如何上传,期待您的解答。
通过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();
}
}
}
在阿里云搜索oss帮助文档,里面有介绍怎么用java后台调用oss接口:需要将阿里云提供的jar包导入你的项目中,然后将阿里云提供的代码放入你的项目中(代码中需要填入你在阿里云获得的key)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。