最近公司文件对接云服务为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实现文件上传和下载相关推荐

  1. Java Web项目中遇到的文件上传与下载问题

    (转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html)   在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...

  2. Springboot中常用的文件上传和下载通用接口

    记录下通用的文件上传和下载接口,一般的开发中都是会使用到的,不过写的最简单的版本. 文章目录 程序测试 本文小结 程序测试 在yml中配置一个文件保存的路径 #保存文件的路径 common:file: ...

  3. HDFS中JAVA API的使用(hadoop的文件上传和下载)

    HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...

  4. java struts 读取文件,java中Struts2 的文件上传和下载示例

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  5. Java Web学习笔记09:文件上传与下载

    文章目录 一.SmartUpload组件 1.SmartUpload概述 2.SmartUpload优点 3.SmartUpload缺点 4.环境准备

  6. java spring文件下载_SpringMVC实现文件上传和下载的工具类

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中. 开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成 ...

  7. java里面的文件上传与下载

    java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...

  8. java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现ftp连接.登陆.上传.下载.删除文件.获取目录.文件列表等操作. 本地调试,首先需要在本机上开启ftp服务和ftp站点. 测试代码 ...

  9. Java如何进行文件上传与下载

    Java文件上传与下载 在项目开发中难免遇到这样的问题,对于我这种小白,那只能寻求度娘的帮助拉,各种搜索和看博客文章,当实际运行时....哎,痛苦. 今日分享一波,望你所用,烦闷去之. 文件上传 首先 ...

最新文章

  1. Window下git生成SSH Key以及格式转换
  2. 如何快速构建服务发现的高可用能力
  3. 简单示例立马搞懂Java日期格式中yyyy-MM-dd HH:mm:ss和YYYY-MM-dd hh:mm:ss的区别
  4. 关于mybatis的@Param注解和参数
  5. CodeForces - 1313B Different Rules(数学+思维)
  6. [MySQL基础]数据库存储数据的特点
  7. Servlet 运行原理
  8. 50行代码,搞定敏感数据读写!
  9. java为什么用工厂模式_为什么用简单工厂模式,而不是直接实例化对象
  10. Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)
  11. 小白使用ubuntu杂记
  12. Mac常用快捷键组合
  13. arm模拟器手机版_基于ARM的模拟器
  14. 2020山西农业大学计算机排名,山西农业大学排名第几
  15. 纯JS+HTML+CSS实现表格增删改查翻页--模板文件管理
  16. 从零开始学C++之标准库类型(一):string 类简介和例程
  17. Excel导入后的后台响应数据前端已经接收但是响应不出来
  18. 宋君强 学科评估 计算机科学,宋君强
  19. 实现简单的通信协议(STM32 F411RET6开发版)
  20. java:获取后缀为doc、docx、xls、xlsx、ppt、pptx、pdf、xml的文件中的文本

热门文章

  1. 背包问题全解 <y总AcWing>
  2. MFC基础知识(四)——双缓冲解决刷屏时闪烁
  3. android入门书籍-------第一行代码免费下载
  4. 测斜仪原理 测斜仪的正确使用方法
  5. 虾皮 店铺中的爆款、引流款和利润款有什么区别?
  6. 冠捷专注于显示器研发 叫板老大三星
  7. 可以给视图加复合主键_灵活视图处理的模式,第1部分–使用复合材料
  8. JavaScript 数组及数组函数常用方法(完全版)
  9. 面试官让我讲讲MySQL(索引篇)
  10. 阿里面试,70%的都是一轮游