flea-jersey使用之文件上传接入

简介: 本文介绍了 Flea框架 下的 flea-jersey模块中的文件上传接入功能

《开发框架-Flea》

image.png

引言

本文将要介绍 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)
     */
    @Override
    public FleaJerseyResponse doPostResource(FleaJerseyRequest request) {
   
   
        return doResource(request);
    }

}
public abstract class FleaJerseyFPostResource extends Resource implements JerseyFileUploadResource {
   
   

    /**
     * @see JerseyFileUploadResource#doFileUploadResource(FormDataMultiPart)
     */
    @POST
    @Path("/fileUpload")
    @Override
    public 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);

}

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

flea-jersey-resource.png

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);

    @Override
    public 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;
    }
}

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

flea-jersey-res-service.png

3.3 客户端文件上传配置

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

flea-jersey-res-service.png

字段名 中文描述
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

  @Test
    public 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);
        }
    }

总结

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

目录
相关文章
|
2月前
|
XML 开发框架 JSON
flea-jersey使用之Flea RESTful接口客户端接入
本篇介绍 Flea框架下的 flea-jersey-client模块,并提供客户端依赖管理及接入步骤
26 1
flea-jersey使用之Flea RESTful接口客户端接入
|
2月前
|
开发框架 API 网络架构
flea-jersey使用之Flea RESTful接口服务端接入
本篇介绍 Flea框架下的 flea-jersey-server模块,并提供服务端依赖管理及接入步骤
29 1
flea-jersey使用之Flea RESTful接口服务端接入
|
10月前
|
安全 NoSQL Java
SpringBoot3整合SpringSecurity,实现自定义接口权限过滤(二)
SpringBoot3整合SpringSecurity,实现自定义接口权限过滤
696 0
|
2月前
|
开发框架
flea-jersey使用之文件下载接入
本文介绍了Flea框架的子模块flea-jersey提供的文件下载功能
23 4
flea-jersey使用之文件下载接入
|
4月前
|
前端开发 Java Apache
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
72 0
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
|
3天前
|
移动开发 前端开发
基于jeecg-boot的flowable流程加签功能实现
基于jeecg-boot的flowable流程加签功能实现
|
2月前
|
XML 开发框架 JSON
flea-jersey使用之Flea RESTful接口介绍
本篇介绍 Flea框架下 flea-jersey 模块下的 Flea RESTful接口
21 1
flea-jersey使用之Flea RESTful接口介绍
|
6月前
|
前端开发 Java 对象存储
使用Feign接口实现文件上传的解决方案
一般的情况下,后端有个微服务,暴露出一个文件上传的restful接口给前端,前端调用该接口获取上传后的链接以及oss key值完成上传。假设提供restful接口的这个服务叫做A,现在有个微服务B有个本地文件,需要将本地文件调用A文件文件上传接口上传到文件服务器,该如何做?
62 0
|
9月前
|
存储 前端开发 Java
Spring Boot之文件上传:实现简单易用的文件上传功能
本篇详细介绍了在Spring Boot应用中实现文件上传功能的步骤。从创建前端页面、编写Controller处理、文件存储与访问、添加路由与页面展示等方面进行了详细讲解,并提供了代码示例。通过学习本文,读者可以轻松了解如何在Spring Boot项目中实现简单易用的文件上传功能,从而在实际应用中更好地满足用户需求。
553 0
Spring Boot之文件上传:实现简单易用的文件上传功能
|
10月前
|
存储 缓存 安全
SpringBoot3整合SpringSecurity,实现自定义接口权限过滤(一)
SpringBoot3整合SpringSecurity,实现自定义接口权限过滤
674 0