OSS上传文件到阿里云
最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云oss上去了,
oss的使用网上有很多介绍,都是去配置一下需要的数据,然后直接调用他的api就可以了。
这里贴一段可以直接使用的oss代码,有需要的可以自己参考下。
@Controller
@RequestMapping("/ossfile")
public class OSSFileController { @Autowired
private EventidService eventidService; //----------------------------------------------------------------------------------------------- private final static String OSS_PATH = ""; /**
* 阿里云ACCESS_ID
*/
private static String ACCESS_ID = "";
/**
* 阿里云ACCESS_KEY
*/
private static String ACCESS_KEY = "";
/**
* 阿里云OSS_ENDPOINT 青岛Url
*/
private static String OSS_ENDPOINT = ""; /**
* 阿里云BUCKET_NAME OSS
*/
private static String BUCKET_NAME = ""; @RequestMapping("/uploadfile")
public String uploadfile(@RequestParam("file") MultipartFile file,
@RequestParam("eventId") int eventId,
HttpSession session) throws FileNotFoundException {
ErrorResult result = new ErrorResult();
//先提前设置下oss的部分
OSSClient client = new OSSClient(OSS_ENDPOINT, ACCESS_ID, ACCESS_KEY);
OSSNewUtils.ensureBucket(client, BUCKET_NAME);
OSSNewUtils.setBucketPublicReadable(client, BUCKET_NAME); String Objectkey = file.getOriginalFilename(); String filename = file.getOriginalFilename();
System.out.println("文件名字"+file.getName()); //这里给提交过来的文件设置一个本地路径,
// 然后提交过来的文件先存入该路径,
// 然后再从该路径提交到阿里云服务器
// 得到uploadFile的绝对路径
String realPath = session.getServletContext().getRealPath("uploadFile");
// 将文件放在这个路径下
File filedir = new File(realPath,file.getOriginalFilename());
// 创建uploadFile目录
filedir.getParentFile().mkdir(); /*这里要写提交的文件地址,也就是已经下载到本地的本地文件地址*/
String uploadFilePath = filedir.toString(); //创建本地文件夹后,先将文件存入本地文件夹
try {
// 将上传的文件写入到本地中
file.transferTo(filedir);
session.setAttribute("imgPath", file.getOriginalFilename());
System.out.println("文件上传到本地文件夹完成,本地文件夹地址:"+ filedir.toString()/*uploadFilePath*/);
} catch (Exception e) {
e.printStackTrace();
System.err.println("文件上传到本地文件夹失败\n");
session.setAttribute("errMsg", e.toString());
} System.out.println("开始上传到阿里云服务器."); System.out.println("正在上传...");
OSSNewUtils.uploadFile(client, BUCKET_NAME, Objectkey, uploadFilePath); System.out.println("上传文件到阿里云成功"); //从阿里云服务器下载文件的存储地址
//String downloadFilePath = "C:\\ccc\\";
//System.out.println("正在下载...");
//downloadFile(client, BUCKET_NAME, Objectkey, downloadFilePath); //发送文件请求,也需要携带你的eventid事件的id,才能存取地址到相应的eventid中去
Eventid eventid = new Eventid();
eventid = eventidService.selectByPrimaryKey(eventId);
//设置数据库地址
eventid.setEventMediafile(OSS_PATH+"/"+Objectkey);
//将阿里云上的地址保存到数据库中去
int resul = eventidService.updateByPrimaryKey(eventid);
System.out.println("更新数据库文件地址字段成功!"); result.setStatus(200);
result.setError("成功的上传文件到阿里云");
result.setData(file);
return "uploadsuccess";
} }
还有一段使用到的oss工具类封装好了,直接使用吧。
public class OSSNewUtils {
/**
* 创建Bucket
*
* @param client OSSClient对象
* @param bucketName BUCKET名
* @throws OSSException
* @throws ClientException
*/
public static void ensureBucket(OSSClient client, String bucketName)throws OSSException, ClientException {
try{
client.createBucket(bucketName);
}catch(ServiceException e){
if(!OSSErrorCode.BUCKET_ALREADY_EXISTS.equals(e.getErrorCode())){
throw e;
}
}
}
/**
* 删除一个Bucket和其中的Objects
*
* @param client OSSClient对象
* @param bucketName Bucket名
* @throws OSSException
* @throws ClientException
*/
public static void deleteBucket(OSSClient client, String bucketName)throws OSSException, ClientException{
ObjectListing ObjectListing = client.listObjects(bucketName);
List<OSSObjectSummary> listDeletes = ObjectListing.getObjectSummaries();
for(int i = 0; i < listDeletes.size(); i++){
String objectName = listDeletes.get(i).getKey();
System.out.println("objectName = " + objectName);
//如果不为空,先删除bucket下的文件
client.deleteObject(bucketName, objectName);
}
client.deleteBucket(bucketName);
}
/**
* 把Bucket设置成所有人可读
*
* @param client OSSClient对象
* @param bucketName Bucket名
* @throws OSSException
* @throws ClientException
*/
public static void setBucketPublicReadable(OSSClient client, String bucketName)throws OSSException, ClientException{
//创建bucket
client.createBucket(bucketName);
//设置bucket的访问权限, public-read-write权限
client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
}
/**
* 上传文件
*
* @param client OSSClient对象
* @param bucketName Bucket名
* @param Objectkey 上传到OSS起的名
* @param filename 本地文件名
* @throws OSSException
* @throws ClientException
* @throws FileNotFoundException
*/
public static RespInfo uploadFile(OSSClient client, String bucketName, String Objectkey, String filename)
throws OSSException, ClientException, FileNotFoundException {
RespInfo respInfo = new RespInfo();
File file = new File(filename);
ObjectMetadata objectMeta = new ObjectMetadata();
objectMeta.setContentLength(file.length());
//判断上传类型,多的可根据自己需求来判定
if (filename.endsWith("xml")) {
objectMeta.setContentType("text/xml");
}
else if (filename.endsWith("jpg")) {
objectMeta.setContentType("image/jpeg");
}
else if (filename.endsWith("png")) {
objectMeta.setContentType("image/png");
}
InputStream input = new FileInputStream(file);
client.putObject(bucketName, Objectkey, input, objectMeta);
respInfo.setContent(filename);
return respInfo;
}
/**
* 下载文件
*
* @param client OSSClient对象
* @param bucketName Bucket名
* @param Objectkey 上传到OSS起的名
* @param filename 文件下载到本地保存的路径
* @throws OSSException
* @throws ClientException
*/
public static void downloadFile(OSSClient client, String bucketName, String Objectkey, String filename)
throws OSSException, ClientException {
client.getObject(new GetObjectRequest(bucketName, Objectkey),
new File(filename));
}
}
oss还有很多功能可以使用,过几天自己再试用一下其他的功能。
OSS上传文件到阿里云的更多相关文章
- 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手
关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手 本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...
- angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)
2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...
- vue + elementUi + upLoadIamge组件 上传文件到阿里云oss
<template> <div class="upLoadIamge"> <el-upload action="https://jsonpl ...
- PHP 上传文件至阿里云OSS对象存储
简述 1.阿里云开通对象存储服务 OSS 并创建Bucket 2.下载PHP SDK至框架扩展目录,点我下载 3.码上code 阿里云操作 开通对象存储服务 OSS 创建 Bucket 配置Acces ...
- Vue上传通过“服务端签名后直传”上传文件到阿里云 报错 400 Bad Request
我报错的原因是 formData.append('file', file) 放在签名前面了 解决办法 formData.append('file', file) 一定在最后 /** * 上传文件到 o ...
- 使用axios上传文件到阿里云对象文件存储服务器oss
背景 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可以直接向OSS写入或读取数据.OSS支持流式写入和文件写入两种方式.使用阿里云oss做文件存储的时候,不可 ...
- PHP上传文件到阿里云OSS,nginx代理访问
1. 阿里云OSS创建存储空间Bucket(读写权限为:公共读) 2. 拿到相关配置 accessKeyId:********* accessKeySecret:********* endpoint: ...
- Base64格式上传文件至阿里云(java)
Controller @PostMapping("/save") public R save(@RequestBody ShareEntity share){ OSSClient ...
- 上传文件到阿里云linux服务器
在“运行”中输入cmd,打开控制台,切换到刚才Putty的安装目录下,我的是E:\Putty,然后输入pscp命令,我们需要这个命令来实现文件的上传.如下图所示,命令格式为: pscp D:\recy ...
随机推荐
- 让你分分钟理解 JavaScript 闭包
闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是 ECMAScript 规范给的定义,如果没有实战经验,很难从定义去理解它.因此,本文不会对闭包的概 ...
- 华为手机无法使用USB调试的解决方案
在Android开发中,一直在使用华为的荣耀8进行调试,但是突然某一次,发现USB调试无法使用了,且在其他的电脑上进行调试也不行. 后来经过查资料,总算解决了此问题,在这里进行一下解决方案的记录. 需 ...
- 性能测试工具Locust的使用
一.写在前面 官网:https://www.locust.io/ 官方使用文档:https://docs.locust.io/en/latest/ 大并发量测试时,建议在linux系统下进行. 二.L ...
- 从零到一详聊如何创建Vue工程及遇到的常见问题
前言 本文也会在github上我的web-study仓库中同步更新,欢迎star. 戳这里,传送 准备工作 判断是否需要FQ或安装镜像,镜像一般可安装国内淘宝镜像,详情可看这里:cnpm npm in ...
- Android版数据结构与算法(六):树与二叉树
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 之前的篇章主要讲解了数据结构中的线性结构,所谓线性结构就是数据与数据之间是一对一的关系,接下来我们就要进入非线性结构的世界了,主要是树与图,好了接 ...
- 第15章 时间常数字符串比较 - IdentityModel 中文文档(v1.0.0)
在比较安全上下文中的字符串(例如比较键)时,应尽量避免泄漏时序信息. 该TimeConstantComparer类可以帮助: var isEqual = TimeConstantComparer.Is ...
- 人生苦短,我用 Python
从2015开始国内就开始慢慢接触Python了,从16年开始Python就已经在国内的热度更高了,目前也可以算的上"全民Python"了.众所周知小学生的教材里面已经有Python ...
- 正向代理&反向代理 简(fu)明(za)解释
最近写的东西越来越偏向Web程序员了··· 你想读懂本篇,就要知道什么是Web服务器——装在世界上某个机房里某台机器里某个操作系统里的一个,对外(公网或者你能访问)服务各种你需要的信息的软件! 它可以 ...
- UiPath实践经验总结(一)
用UiPath做RPA也有一段时间了,初上阵不久,遇到过不少大大小小的坑.以下列出一些心得体会,望能抛砖引玉,与同行进行更多交流. 1. 日志策略:将UiPath Robot的Logging Leve ...
- Android路由框架-ARouter详解
文章大纲 一.页面路由基本介绍1.什么是页面路由2.为什么要使用页面路由二.页面路由框架ARouter介绍1.常用功能介绍2.常见应用场景三.源码下载四.参考文章 一.页面路由基本介绍 1.什么是 ...