Java集成Ucloud中Ufile实现文件上传和下载
最近公司文件对接云服务为Ucloud,看过Ufile的官方文档,感觉有些模糊,各种帖子也是,里面使用的ufile方法都无法引用到,写了一个demo实现上传下载。
一、依赖,到官方查询对应maven依赖即可(因为公司项目没有使用maven管理,所以需要以下Jar包)
二、封装工具类
public class Constants {static {/*** 开启Debug级别日志*/JLog.SHOW_TEST = true;JLog.SHOW_DEBUG = true;/*** 配置UfileClient,必须在使用UfileClient之前调用*/UfileClient.configure(new UfileClient.Config(new HttpClient.Config(10, 5, TimeUnit.MINUTES).setTimeout(10 * 1000, 30 * 1000, 30 * 1000).setExecutorService(Executors.newSingleThreadExecutor())));}/*** 本地Bucket相关API的签名器(账号在ucloud 的API 公私钥,不能使用token)* 如果只用到了文件操作,不需要配置下面的bucket 操作公私钥*/public static final BucketAuthorization BUCKET_AUTHORIZER = new UfileBucketLocalAuthorization("","");/*** 本地Object相关API的签名器* 请修改下面的公私钥*/public static final ObjectAuthorization OBJECT_AUTHORIZER = new UfileObjectLocalAuthorization("公钥","私钥");}
public class UfileUtil {private static final Logger logger = LogManager.getLogger(UfileUtil.class);public static String upload(String fileName, String path) throws Exception{String fileUrl = "";//需要被上传文件的位置File file = new File(path);//上传到服务器上,文件的位置String ServerFileName = "demopath/" + fileName;//配置信息 区域 后缀ObjectConfig config = new ObjectConfig("cn-bj", "ufileos.com");ObjectApiBuilder apiBuild = UfileClient.object(Constants.OBJECT_AUTHORIZER, config);// mimeType 可参考:https://www.jianshu.com/p/4b5d5dc252c3PutFileApi api = apiBuild.putObject(file, "text/plan"); //上传到服务器的文件名称 demo/目录 admin002.txt(文件名) 不要用/开头api = api.nameAs(ServerFileName); //申请的空间名称api = api.toBucket(""); api = api.setOnProgressListener(new OnProgressListener() {@Overridepublic void onProgress(long bytesWritten, long contentLength){logger.info("bytesWritten:{},contentLength:{}", bytesWritten, contentLength);}});PutObjectResultBean response = api.execute();logger.info("response:{}", JSONObject.toJSONString(response));if ("0".equals(String.valueOf(response.getRetCode()))){fileUrl = "http://申请的空间地址,如xxxx.cn-bj.ufileos.com/" + ServerFileName;logger.info("云服务存储url:{}", fileUrl);}return fileUrl;}
}
注意:如果云空间设置为私有空间,返回的地址无法直接使用,点击后会返回没有签名错误,如果设置的公有空间则可以直接使用,另外,这个地址并不是下载返回文件,而是直接打开文件,对于excel这种文件是乱码数据,所以文件下载需要自己再次封装。
File file = new File(path);//配置信息 区域 后缀ObjectConfig config = new ObjectConfig("cn-bj", "ufileos.com");ObjectApiBuilder apiBuild = UfileClient.object(Constants.OBJECT_AUTHORIZER, config);GetFileApi fd = apiBuild.getFile(fileRecord.getStr("上面返回的文件地址"));fd.saveAt(dirStr, "要设置的文件名");try {logger.info("下载云服务文件开始>>>>>>>>>>");DownloadFileBean execute = fd.execute();file = execute.getFile();logger.info("下载云服务文件完成>>>>>>>>>>");}catch (Exception e){logger.error("捕获异常:下载云服务文件出错!", e);}FileWriter fw = new FileWriter(file, true);BufferedWriter bw = new BufferedWriter(fw);try {bw.flush();}catch (Exception e){logger.error("捕获异常:文件下载出错!", e);}finally {bw.close();fw.close();}
Java集成Ucloud中Ufile实现文件上传和下载相关推荐
- Java Web项目中遇到的文件上传与下载问题
(转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html) 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...
- Springboot中常用的文件上传和下载通用接口
记录下通用的文件上传和下载接口,一般的开发中都是会使用到的,不过写的最简单的版本. 文章目录 程序测试 本文小结 程序测试 在yml中配置一个文件保存的路径 #保存文件的路径 common:file: ...
- HDFS中JAVA API的使用(hadoop的文件上传和下载)
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...
- java struts 读取文件,java中Struts2 的文件上传和下载示例
文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...
- Java Web学习笔记09:文件上传与下载
文章目录 一.SmartUpload组件 1.SmartUpload概述 2.SmartUpload优点 3.SmartUpload缺点 4.环境准备
- java spring文件下载_SpringMVC实现文件上传和下载的工具类
本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中. 开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成 ...
- java里面的文件上传与下载
java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...
- java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现ftp连接.登陆.上传.下载.删除文件.获取目录.文件列表等操作. 本地调试,首先需要在本机上开启ftp服务和ftp站点. 测试代码 ...
- Java如何进行文件上传与下载
Java文件上传与下载 在项目开发中难免遇到这样的问题,对于我这种小白,那只能寻求度娘的帮助拉,各种搜索和看博客文章,当实际运行时....哎,痛苦. 今日分享一波,望你所用,烦闷去之. 文件上传 首先 ...
最新文章
- Window下git生成SSH Key以及格式转换
- 如何快速构建服务发现的高可用能力
- 简单示例立马搞懂Java日期格式中yyyy-MM-dd HH:mm:ss和YYYY-MM-dd hh:mm:ss的区别
- 关于mybatis的@Param注解和参数
- CodeForces - 1313B Different Rules(数学+思维)
- [MySQL基础]数据库存储数据的特点
- Servlet 运行原理
- 50行代码,搞定敏感数据读写!
- java为什么用工厂模式_为什么用简单工厂模式,而不是直接实例化对象
- Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)
- 小白使用ubuntu杂记
- Mac常用快捷键组合
- arm模拟器手机版_基于ARM的模拟器
- 2020山西农业大学计算机排名,山西农业大学排名第几
- 纯JS+HTML+CSS实现表格增删改查翻页--模板文件管理
- 从零开始学C++之标准库类型(一):string 类简介和例程
- Excel导入后的后台响应数据前端已经接收但是响应不出来
- 宋君强 学科评估 计算机科学,宋君强
- 实现简单的通信协议(STM32 F411RET6开发版)
- java:获取后缀为doc、docx、xls、xlsx、ppt、pptx、pdf、xml的文件中的文本