最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云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上传文件到阿里云的更多相关文章

  1. 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手

    关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手   本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...

  2. angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

    2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...

  3. vue + elementUi + upLoadIamge组件 上传文件到阿里云oss

    <template> <div class="upLoadIamge"> <el-upload action="https://jsonpl ...

  4. PHP 上传文件至阿里云OSS对象存储

    简述 1.阿里云开通对象存储服务 OSS 并创建Bucket 2.下载PHP SDK至框架扩展目录,点我下载 3.码上code 阿里云操作 开通对象存储服务 OSS 创建 Bucket 配置Acces ...

  5. Vue上传通过“服务端签名后直传”上传文件到阿里云 报错 400 Bad Request

    我报错的原因是 formData.append('file', file) 放在签名前面了 解决办法 formData.append('file', file) 一定在最后 /** * 上传文件到 o ...

  6. 使用axios上传文件到阿里云对象文件存储服务器oss

    背景 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可以直接向OSS写入或读取数据.OSS支持流式写入和文件写入两种方式.使用阿里云oss做文件存储的时候,不可 ...

  7. PHP上传文件到阿里云OSS,nginx代理访问

    1. 阿里云OSS创建存储空间Bucket(读写权限为:公共读) 2. 拿到相关配置 accessKeyId:********* accessKeySecret:********* endpoint: ...

  8. Base64格式上传文件至阿里云(java)

    Controller @PostMapping("/save") public R save(@RequestBody ShareEntity share){ OSSClient ...

  9. 上传文件到阿里云linux服务器

    在“运行”中输入cmd,打开控制台,切换到刚才Putty的安装目录下,我的是E:\Putty,然后输入pscp命令,我们需要这个命令来实现文件的上传.如下图所示,命令格式为: pscp D:\recy ...

随机推荐

  1. 让你分分钟理解 JavaScript 闭包

    闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是 ECMAScript 规范给的定义,如果没有实战经验,很难从定义去理解它.因此,本文不会对闭包的概 ...

  2. 华为手机无法使用USB调试的解决方案

    在Android开发中,一直在使用华为的荣耀8进行调试,但是突然某一次,发现USB调试无法使用了,且在其他的电脑上进行调试也不行. 后来经过查资料,总算解决了此问题,在这里进行一下解决方案的记录. 需 ...

  3. 性能测试工具Locust的使用

    一.写在前面 官网:https://www.locust.io/ 官方使用文档:https://docs.locust.io/en/latest/ 大并发量测试时,建议在linux系统下进行. 二.L ...

  4. 从零到一详聊如何创建Vue工程及遇到的常见问题

    前言 本文也会在github上我的web-study仓库中同步更新,欢迎star. 戳这里,传送 准备工作 判断是否需要FQ或安装镜像,镜像一般可安装国内淘宝镜像,详情可看这里:cnpm npm in ...

  5. Android版数据结构与算法(六):树与二叉树

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 之前的篇章主要讲解了数据结构中的线性结构,所谓线性结构就是数据与数据之间是一对一的关系,接下来我们就要进入非线性结构的世界了,主要是树与图,好了接 ...

  6. 第15章 时间常数字符串比较 - IdentityModel 中文文档(v1.0.0)

    在比较安全上下文中的字符串(例如比较键)时,应尽量避免泄漏时序信息. 该TimeConstantComparer类可以帮助: var isEqual = TimeConstantComparer.Is ...

  7. 人生苦短,我用 Python

    从2015开始国内就开始慢慢接触Python了,从16年开始Python就已经在国内的热度更高了,目前也可以算的上"全民Python"了.众所周知小学生的教材里面已经有Python ...

  8. 正向代理&反向代理 简(fu)明(za)解释

    最近写的东西越来越偏向Web程序员了··· 你想读懂本篇,就要知道什么是Web服务器——装在世界上某个机房里某台机器里某个操作系统里的一个,对外(公网或者你能访问)服务各种你需要的信息的软件! 它可以 ...

  9. UiPath实践经验总结(一)

    用UiPath做RPA也有一段时间了,初上阵不久,遇到过不少大大小小的坑.以下列出一些心得体会,望能抛砖引玉,与同行进行更多交流. 1. 日志策略:将UiPath Robot的Logging Leve ...

  10. Android路由框架-ARouter详解

    文章大纲 一.页面路由基本介绍1.什么是页面路由2.为什么要使用页面路由二.页面路由框架ARouter介绍1.常用功能介绍2.常见应用场景三.源码下载四.参考文章   一.页面路由基本介绍 1.什么是 ...