oss上传判断_OSS上传图片demo

packagecom.aliyun.oss.demo;import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;import java.io.*;importjava.net.URL;importjava.util.List;importjava.util.Date;importjava.util.Random;importcom.aliyun.oss.ClientException;importcom.aliyun.oss.OSSClient;importcom.aliyun.oss.OSSException;import com.aliyun.oss.model.*;importorg.apache.log4j.Logger;importorg.apache.log4j.PropertyConfigurator;import javax.swing.*;public class HelloOSS extends JFrame implementsActionListener {static Logger logger = Logger.getLogger(HelloOSS.class);//endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。//如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,//链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region

//endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,//比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。

private static String endpoint = "";//accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,//创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。//注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。

private static String accessKeyId = "";private static String accessKeySecret = "";//Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。//Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。

private static String bucketName = "";

JButton jb= new JButton("选择文件");public static voidmain(String[] args) {//TODO 自动生成的方法存根

newHelloOSS();

}publicHelloOSS() {

jb.setActionCommand("open");//设置按钮颜色

jb.setBackground(Color.LIGHT_GRAY);//建立容器使用边界布局

this.getContentPane().add(jb, BorderLayout.SOUTH);

jb.addActionListener(this);this.setTitle("标题");this.setSize(333, 288);this.setLocation(200, 200);//显示窗口true

this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Overridepublic voidactionPerformed(ActionEvent e) {if (e.getActionCommand().equals("open")) {

JFileChooser jf= newJFileChooser();//显示打开的文件对话框

jf.showOpenDialog(this);//使用文件类获取选择器选择的文件

File f =jf.getSelectedFile();//返回路径名

String s =f.getAbsolutePath();//JOptionPane弹出对话框类,显示绝对路径名//JOptionPane.showMessageDialog(this, s, "标题",JOptionPane.WARNING_MESSAGE);

uploadPicture(s);

}

}public voiduploadPicture(String path) {//日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。//日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。

PropertyConfigurator.configure("conf/log4j.properties");

logger.info("Started");//生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,//链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start

OSSClient ossClient = newOSSClient(endpoint, accessKeyId, accessKeySecret);try{/*校验存储空间*/

//判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。//链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init

if(ossClient.doesBucketExist(bucketName)) {

System.out.println("您已经创建Bucket:" + bucketName + "。");

}else{

System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");//创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。//链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init

ossClient.createBucket(bucketName);

}//查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。//链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init

BucketInfo info =ossClient.getBucketInfo(bucketName);

System.out.println("Bucket " + bucketName + "的信息如下:");

System.out.println("\t数据中心:" +info.getBucket().getLocation());

System.out.println("\t创建时间:" +info.getBucket().getCreationDate());

System.out.println("\t用户标志:" +info.getBucket().getOwner());/*上传本地图片*/

//图片全路径

String filePath =path;//上传文件全名称

String newFileKey = getStringRandom(32) +getContentType(filePath);

InputStream inputStream= newFileInputStream(filePath);//上传流文件

ossClient.putObject(bucketName, "xxxx/" +newFileKey, inputStream);//设置URL过期时间为1小时。

Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);//生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。

URL url = ossClient.generatePresignedUrl(bucketName, "xxxx/" +newFileKey, expiration);

System.out.println(url);/*遍历存储空间*/

//查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。//链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket

//指定前缀。

final String keyPrefix = "xxxx";//列举包含指定前缀的文件。默认列举100个文件。

ObjectListing objectListing = ossClient.listObjects(newListObjectsRequest(bucketName).withPrefix(keyPrefix));

List sums =objectListing.getObjectSummaries();

System.out.println("您有以下Object:");for(OSSObjectSummary s : sums) {

System.out.println("\t" +s.getKey());

}/*下载文件到本地*/

//下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。//ossClient.getObject(new GetObjectRequest(bucketName, "xxxx/"+newFileKey), new File("G://oss//"+newFileKey));

/*删除空间文件*/

//删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。//链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket

//ossClient.deleteObject(bucketName, newFileKey);//System.out.println("删除Object:" + newFileKey + "成功。");

}catch(OSSException oe) {

oe.printStackTrace();

}catch(ClientException ce) {

ce.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}finally{

ossClient.shutdown();

}

logger.info("Completed");

}/*** 生成随机数字和字母,

*

*@param*@return*@authorGuoyh

* @date 2018/10/10 12:25*/

public static String getStringRandom(intlength) {

String val= "";

Random random= newRandom();//参数length,表示生成几位随机数

for (int i = 0; i < length; i++) {

String charOrNum= random.nextInt(2) % 2 == 0 ? "char" : "num";//输出字母还是数字

if ("char".equalsIgnoreCase(charOrNum)) {//输出是大写字母还是小写字母

int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;

val+= (char) (random.nextInt(26) +temp);

}else if ("num".equalsIgnoreCase(charOrNum)) {

val+= String.valueOf(random.nextInt(10));

}

}returnval;

}/*** 通过文件名判断并获取OSS服务文件上传时文件的contentType

*

*@paramfileName 文件名

*@return文件的contentType*/

public staticString getContentType(String fileName) {//文件的后缀名

String fileExtension = fileName.substring(fileName.lastIndexOf("."));if (".bmp".equalsIgnoreCase(fileExtension)) {return ".bmp";

}if (".gif".equalsIgnoreCase(fileExtension)) {return ".gif";

}if (".jpeg".equalsIgnoreCase(fileExtension)) {return ".jpeg";

}if (".jpg".equalsIgnoreCase(fileExtension)) {return ".jpg";

}if (".png".equalsIgnoreCase(fileExtension)) {return ".png";

}//默认返回类型

return ".jpeg";

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值