最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云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. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  2. 百度推出 MIP Baidu Path链接

    在站长将站点 MIP 化时,需要关注 URL 的一共有三个:MIP URL, MIP-Cache URL 以及 MIP Baidu Path. 从 URL 说起 在互联网中,URL 定义页面的地址,每 ...

  3. mpvue 小程序开发爬坑汇总

    <!-- 小程序的爬坑记录 --> 1 微信小程序之动态获取元素宽高 var obj=wx.createSelectorQuery(); 2 微信小程序图片自适应 <image cl ...

  4. [译] PEP 255--简单的生成器

    我正打算写写 Python 的生成器,然而查资料时发现,引入生成器的 PEP 没人翻译过,因此就花了点时间翻译出来.如果在阅读时,你有读不懂的地方,不用怀疑,极有可能是我译得不到位.若出现这种情况,我 ...

  5. 如何理解Axis?

    前言 只有光头才能变强. 回顾前面: 从零开始学TensorFlow[01-搭建环境.HelloWorld篇] 什么是TensorFlow? TensorFlow读写数据 不知道大家最开始接触到axi ...

  6. 异步多线程 Async

    进程:进程是一个程序在电脑运行时,全部资源的合集叫进程 线程:是程序的最小执行单位,包含计算资源,任何一个操作的响应都是线程完成的.   多线程:多个线程并发执行   Thread 是.net框架封装 ...

  7. Android studio无法创建类和接口问题解决办法。提示 Unable to parse template "Class"

    重新配置了studio 的工作环境, 没问题,后来加需求要新增java类和接口,这就出现问题了,新建的时候,就会报错: Unable to parse template "Interface ...

  8. 001-为什么Java能这么流行

    本文首发于公众号:javaadu 典型回答 这种问题比较笼统,如果我遇到这个问题,我会从下面几个点阐述我的观点: Java通过JVM实现了"一次编写,到处运行"的特性,由JVM屏蔽 ...

  9. ubuntu下svn的命令使用

    Subversion的官方网站是:http://subversion.tigris.org/ SVN简介 SVN(Subversion)是一个自由.开源的项目源代码版本控制工具.目前,绝大多数开源软件 ...

  10. cmd 配置dchp服务器

    1.安装DHCP服务器角色,这样在netsh下才会有dhcp上下文 2.编写配置dhcp的脚本 从命令行运行netsh有两种语法: 比如要获取已经配置的网络接口列表 1.写全 netsh -r Rem ...