首先当然是开通 oos 服务啦之后创建一个backet 取名haha174
顺带创建几个分类文件夹如下图
这里写图片描述
接下来依次去到上传所需要的数据创建一个工具类来保存方便使用
pom 依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.7.0</version>
</dependency>
public class FilePath {
public static final String RESOURCE_PATH="D:/";
public static final String URL_PATH="www.haha174.top:8086/dbz/";
// oos 相关 数据
public static final String endpoint="http://oss-cn-beijing.aliyuncs.com";
public static final String accessKeyId = "LTAIWOJiEXDii";
public static final String accessKeySecret = "0GQxrDVLr1ohyCMOuZpUvg";
public static final String bucketName="haha174";
public static final String accessUrl="http://haha174.oss-cn-beijing.aliyuncs.com";
// oos 相关 结束
// 下载文件零时存放 和 pdf 临时存放路径
public static final String PDF_PATH="D://";
}
当然了上述的asskey 和accessKeySecret 是假的 可以去https://ak-console.aliyun.com/?spm=5176.8465980.home.dindex1.7fcf7b345iZLRa#/accesskey 查看自己的id 和accessKeySecret
接下来写一个工具类做上传用
public static String uploadFile(MultipartFile multipartFile, String remotePath) throws Exception {
// 流转换 将MultipartFile转换为oss所需的InputStream
// CommonsMultipartFile cf = (CommonsMultipartFile) multipartFile;
// DiskFileItem fi = (DiskFileItem) cf.getFileItem();
InputStream fileContent = multipartFile.getInputStream();
//获取文件名,对文件名做随机处理
String fileName = multipartFile.getOriginalFilename();
System.out.println(fileName);
//这里可以修改文件的命名
fileName = "dbz_" + new Date().getTime() + fileName.substring(fileName.lastIndexOf("."));
// 加载配置文件,初始化OSSClient
// OSSConfigure ossConfigure = new OSSConfigure("/system.properties");
OSSClient ossClient = new OSSClient(FilePath.endpoint, FilePath.accessKeyId,
FilePath.accessKeySecret);
// 定义二级目录
String remoteFilePath = remotePath.substring(0, remotePath.length()).replaceAll("\\\\", "/") + "/";
// 创建上传Object的Metadata
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(fileContent.available());
objectMetadata.setContentEncoding("utf-8");
objectMetadata.setCacheControl("no-cache");
objectMetadata.setHeader("Pragma", "no-cache");
objectMetadata.setContentType(contentType(fileName.substring(fileName.lastIndexOf("."))));
objectMetadata.setContentDisposition("inline;filename=" + fileName);
// 上传文件
System.out.print(remoteFilePath);
ossClient.putObject(FilePath.bucketName, remoteFilePath+fileName , fileContent, objectMetadata);
// 关闭OSSClient
ossClient.shutdown();
// 关闭io流
fileContent.close();
return FilePath.accessUrl + "/" + remoteFilePath + fileName;
}
之后通过controller 调用
@RequestMapping("/oos.do")
public String UploadVideo(MultipartFile file,HttpSession sesssion) throws ParseException {
boolean flag = true;
RandomUtil util = new RandomUtil();
if (file != null) {
try {String type = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
//String filePath = Resource + util.getTimeString() + util.getRandom(4) + "." + type;
// 转存文件
//file.transferTo(new File(FilePath.RESOURCE_PATH+filePath));
//下面的other 是你bucket中德分类文件夹名称
String filePath= new OSSManageUtil().uploadFile(file,"other");
return filePath;
//得到新的文件名
// list.add(new Msg(size, FilePath.URL_PATH+filePath));
} catch (Exception e) {
e.printStackTrace();
return "上传失败";
}
} else {
}
return "上传成功";
}
创建一个jsp 页面来做文件上传
<form action="/upload/oos.do" method="post" id="ImageForm" enctype="multipart/form-data" >
<input id='upinput' type='file' name='file'>
<input type='submit' value="上传">
</form>
启动项目上传图片
这里写图片描述选择一张图片上传成功的话会返回 访问地址如下图
这里写图片描述
简单的 java sdk 就上传成功了
推荐一篇文章 http://mp.weixin.qq.com/s/Xoevf4oFpKg1f5vHT98gOw
个人博客 地址 http://www.haha174.top/article/details/255984
项目源码 https://github.com/haha174/day
网友评论