文件上传

本文将要介绍 flea-jersey 提供的文件上传功能。

文件上传功能,需要引入Flea RESTful接口服务端和客户端依赖,详细如下所示:

1. 客户端依赖

 <!-- FLEA JERSEY CLIENT--><dependency><groupId>com.huazie.fleaframework</groupId><artifactId>flea-jersey-client</artifactId><version>2.0.0</version></dependency>

2. 服务端依赖

 <!-- FLEA JERSEY SERVER--><dependency><groupId>com.huazie.fleaframework</groupId><artifactId>flea-jersey-server</artifactId><version>2.0.0</version></dependency>

3. 文件上传接入讲解

Flea RESTful接口服务端和客户端接入,本篇博文不再赘述;可见笔者 flea-jersey 下的文章。

3.1 服务端上传资源定义

上传资源继承 FleaJerseyPostResource,该类定义可至GitHub查看 flea-jersey-server,具体如下所示:

@Path("upload")
public class UploadResource extends FleaJerseyPostResource {}
public abstract class FleaJerseyPostResource extends FleaJerseyFPostResource implements JerseyPostResource {/*** @see JerseyPostResource#doPostResource(FleaJerseyRequest)*/@Overridepublic FleaJerseyResponse doPostResource(FleaJerseyRequest request) {return doResource(request);}}
public abstract class FleaJerseyFPostResource extends Resource implements JerseyFileUploadResource {/*** @see JerseyFileUploadResource#doFileUploadResource(FormDataMultiPart)*/@POST@Path("/fileUpload")@Overridepublic FleaJerseyResponse doFileUploadResource(FormDataMultiPart formDataMultiPart) {return doCommonFileUploadResource(formDataMultiPart);}}
public interface JerseyFileUploadResource {/*** <p> 处理文件上传POST资源数据 </p>** @param formDataMultiPart 表单数据* @return 响应对象* @since 1.0.0*/@Consumes(MediaType.MULTIPART_FORM_DATA)@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})FleaJerseyResponse doFileUploadResource(FormDataMultiPart formDataMultiPart);}

上传资源,配置参考如下:

3.2 服务端文件上传服务定义

文件上传服务接口类,参考实现如下:

public interface IFleaUploadSV {/*** <p> 文件上传 </p>** @param input 文件上传入参(包含上传鉴权令牌)* @return 文件上传出参(包含文件编号)* @throws Exception* @since 1.0.0*/OutputFileUploadInfo fileUpload(InputFileUploadInfo input) throws Exception;
}

文件上传服务实现类,参考实现如下:

@Service
public class FleaUploadSVImpl implements IFleaUploadSV {private static final Logger LOGGER = LoggerFactory.getLogger(FleaUploadSVImpl.class);@Overridepublic OutputFileUploadInfo fileUpload(InputFileUploadInfo input) throws Exception {if (LOGGER.isDebugEnabled()) {LOGGER.debug("FleaUploadSVImpl##fileUpload(InputFileUploadInfo) Start");}String token = input.getToken();if (StringUtils.isBlank(token)) {// 入参【{0}】不能为空throw new ServiceException("ERROR-SERVICE0000000001", "上传鉴权令牌【token】");}FleaFileObject fileObject = FleaJerseyManager.getManager().getFileObject();String fileName = fileObject.getFileName();File uploadFile = fileObject.getFile();String fileId = DateUtils.date2String(null, DateFormatEnum.YYYYMMDD) + RandomCode.toUUID();IOUtils.toFile(new FileInputStream(uploadFile), "E:\\" + fileId + "_" +fileName);OutputFileUploadInfo outputFileUploadInfo = new OutputFileUploadInfo();outputFileUploadInfo.setFileId(fileId);if (LOGGER.isDebugEnabled()) {LOGGER.debug("FleaUploadSVImpl##fileUpload(InputFileUploadInfo) Start");}return outputFileUploadInfo;}
}

文件上传服务,配置参考如下:

3.3 客户端文件上传配置

文件上传客户端,配置参考如下:

字段名 中文描述
client_code 客户端编码
resource_url 资源地址
resource_code 资源编码
service_code 服务编码
request_mode 请求方式
media_type 媒体类型
client_input 客户端业务入参
client_output 客户端业务出参

上述配置中 请求方式 为 fpost,这里定义为文件POST请求,可参考枚举类 RequestModeEnum

FPOST("FPOST", "com.huazie.fleaframework.jersey.client.request.impl.FPostFleaRequest", "文件POST请求")

文件POST请求具体实现,可至 GitHub查看 FPostFleaRequest

3.4 客户端文件上传调用

文件上传自测类,可至GitHub查看 JerseyTest

 @Testpublic void testUploadFile() {try {String clientCode = "FLEA_CLIENT_FILE_UPLOAD";InputFileUploadInfo input = new InputFileUploadInfo();input.setToken(RandomCode.toUUID());// 添加待上传文件至文件上下文对象中File file = new File("E:\\IMG.jpg");FleaJerseyManager.getManager().addFileDataBodyPart(file);FleaJerseyClient client = applicationContext.getBean(FleaJerseyClient.class);// 调用文件上传服务Response<OutputFileUploadInfo> response = client.invoke(clientCode, input, OutputFileUploadInfo.class);LOGGER.debug("result = {}", response);} catch (Exception e) {LOGGER.debug("Exception = ", e);}}

至此,文件上传已接入完毕,下篇博文将会讲解文件下载接入。

flea-jersey使用之文件上传接入相关推荐

  1. jersey跨域文件上传

    1.1.添加upload文件夹 在webapps\Root文件夹下创建用于接收上传文件的upload文件夹 创建upload文件夹 1.2.修改conf\web.xml设置允许上传文件 <ini ...

  2. Jersey框架:文件上传下载

    企业应用中,文件管理是非常通用和重要的模块,功能包括文件上传.下载.文件管理(浏览.删除.权限等)等操作,本文针对Jersey框架实现文件的上传和下载. Jersey文件特性 Jersey实现文件上传 ...

  3. springMVC结合jersey实现跨服务器文件上传

    除了spring相关的依赖依赖,我们需要添加jersey的两个相关依赖,版本信息可以不同. <dependency><groupId>com.sun.jersey</gr ...

  4. 保姆级别SpringBoot接入又拍云实现表单文件上传手册

    一.背景 本来打算使用七牛云进行文件上传的,由于自己一直没有实名认证(需要上传手持身份证就很烦),导致现在想用的时候用不了.另外自己所在的公司用的是又拍云,就试着看看又拍云能不能用,结果就有了这篇文章 ...

  5. 文件上传之Springmvc方式上传代码

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html ...

  6. 文件上传之传统方式上传代码回顾

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html ...

  7. SpringBoot整合Jersey2.x实现文件上传API

    前言 SpringBoot的官方文档中关于Jersey的介绍并不是很全面: 27.3 JAX-RS and Jersey,SpringBoot-Sample项目里面也只有非常基础的代码,对于一些复杂的 ...

  8. SSM框架之Spring MVC(三)http响应、文件上传

    一.响应数据和结果视图 1.1 返回值分类 1.1.1 字符串 创建实体类和controller类 实体类User package cn.xiaomifeng1010.domain;import ja ...

  9. 腾讯云cos对象存储服务文件上传api就是一个大坑

    一.介绍 对象存储服务(Cloud Object Service)是基于腾讯多年海量服务经验,对外提供的可靠.安全.易用的海量存储服务.提供多样化接入方式,以及全国部署的上传加速集群,可以无缝衔接CD ...

  10. JSON+AJAX+ThreadLocal+文件上传下载

    文章目录 JSON和AJAX文档介绍 1. JSON介绍 1.1 JSON快速入门 1.2 JSON和字符串转换 1.2.1 JSON转字符串 1.2.2 字符串转JSON 1.2.3 JSON和字符 ...

最新文章

  1. 基于SSM实现的奶茶店会员管理系统
  2. mstsc /console超出最大允许连接数(远程桌面不能连接)解决方法
  3. return 和 exit
  4. 深度解密Go语言之反射
  5. [小技巧][JAVA][转换]字符数组char[]与字符串String之间互相转换
  6. 如果有这样一台服务器……
  7. 动态添加ImageView 设置setPadding不起作用问题
  8. 软考初级-程序员了解
  9. 微积分基础1-微分篇
  10. 网页点击链接,跳转qq添加好友
  11. paraview编译
  12. macos 卸载驱动_如何从macOS菜单栏中快速卸载外部驱动器
  13. DNN硬件加速器设计1 -- 序(MIT)
  14. 做一个有意境的女人难上加难
  15. 广义瑞利商_LDA里的瑞利商和广义瑞利商
  16. HTML知识基础语法篇(8)
  17. 常微分方程组之龙格-库塔法
  18. 一般企业应用上云架构实践
  19. 使用poi来导入具有合并单元格的excel表格
  20. 拖延的原因、误区、及建议

热门文章

  1. laravel 实现队列功能
  2. html实现雪花飘落
  3. RabbitMQ Management:Management API returned status code 500
  4. 道教的精神———闻一多
  5. 一个妹子的后台面试经验总结(蚂蚁金服+美团+携程+滴滴+....)
  6. 今天生日回想这难忘的一年(应届大学生2019-2020一年的总结)
  7. 关于微擎人人商城互动直播通信服务安装和启动教程记录
  8. 8.(高级)CSS形状之:菱形图片
  9. CH340G软件识别、usb转串口软件识别、测试
  10. android界面侧滑,Android 开发之Android Material Design NavigationView侧滑界面自定义