首页 > 其他分享 >flea-jersey使用之文件下载接入

flea-jersey使用之文件下载接入

时间:2023-02-14 10:34:48浏览次数:44  
标签:文件 String 接入 jersey flea output public 下载 客户端

文件下载

本文将要介绍 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 服务端下载资源定义

下载资源 DownloadResource 继承文件GET资源 FleaJerseyFGetResource ,用于实现文件下载功能

@Path("download")
public class DownloadResource extends FleaJerseyFGetResource implements JerseyPostResource {

    /**
     * @see JerseyPostResource#doPostResource(FleaJerseyRequest)
     */
    @Override
    public FleaJerseyResponse doPostResource(FleaJerseyRequest request) {
        return doResource(request);
    }
}
public abstract class FleaJerseyFGetResource extends Resource implements JerseyFileDownloadResource {

    /**
     * @see JerseyFileDownloadResource#doFileDownloadResource(String)
     */
    @GET
    @Path("/fileDownload")
    @Override
    public FormDataMultiPart doFileDownloadResource(@QueryParam("REQUEST") String requestData) {
        return doCommonFileDownloadResource(requestData);
    }

}
public interface JerseyFileDownloadResource {

    /**
     * <p> 处理文件下载资源数据 </p>
     *
     * @param requestData 请求数据字符串
     * @return Jersey响应对象
     * @since 1.0.0
     */
    @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    @Produces(MediaType.MULTIPART_FORM_DATA)
    FormDataMultiPart doFileDownloadResource(String requestData);
}

下载资源,配置参考如下: 在这里插入图片描述

3.2 服务端文件下载服务定义

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

public interface IFleaDownloadSV {

    /**
     * <p> 文件下载 </p>
     *
     * @param input 文件下载业务入参
     * @return 文件下载业务出参
     * @throws Exception
     * @since 1.0.0
     */
    OutputFileDownloadInfo fileDownload(InputFileDownloadInfo input) throws Exception;
}

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

@Service
public class FleaDownloadSVImpl implements IFleaDownloadSV {

    private static final Logger LOGGER = LoggerFactory.getLogger(FleaDownloadSVImpl.class);

    @Override
    public OutputFileDownloadInfo fileDownload(InputFileDownloadInfo input) throws Exception {

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("FleaDownloadSVImpl##fileDownload(InputFileDownloadInfo) Start");
        }

        File file = new File("E:\\IMG.jpg");
        // 将文件添加到文件上下文中
        FleaJerseyManager.getManager().addFileDataBodyPart(file);

        OutputFileDownloadInfo output = new OutputFileDownloadInfo();
        output.setUploadAcctId("121212");
        output.setUploadSystemAcctId("1000");
        output.setUploadDate(DateUtils.date2String(null, DateFormatEnum.YYYYMMDDHHMMSS));

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("FleaDownloadSVImpl##fileDownload(InputFileDownloadInfo) End");
        }

        return output;
    }
}

文件下载服务,配置参考如下: 在这里插入图片描述

3.3 客户端文件下载配置

文件下载客户端,配置参考如下: 在这里插入图片描述

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

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

FGET("FGET", "com.huazie.fleaframework.jersey.client.request.impl.FGetFleaRequest", "文件GET请求")

文件GET请求具体实现,可至 GitHub查看 FGetFleaRequest

3.4 客户端文件下载调用

文件下载自测类,可至GitHub查看 JerseyTest

	@Test
    public void testDownloadFile() {
        try {
            String clientCode = "FLEA_CLIENT_FILE_DOWNLOAD";

            InputFileDownloadInfo input = new InputFileDownloadInfo();
            input.setToken(RandomCode.toUUID());

            FleaJerseyClient client = applicationContext.getBean(FleaJerseyClient.class);

            Response<OutputFileDownloadInfo> response = client.invoke(clientCode, input, OutputFileDownloadInfo.class);

            LOGGER.debug("result = {}", response);

            OutputFileDownloadInfo output = response.getOutput();

            // 获取文件信息
            FleaFileObject fileObject = FleaJerseyManager.getManager().getFileObject();
            String fileName = fileObject.getFileName();
            File downloadFile = fileObject.getFile();

            String uploadSystemAcctId = output.getUploadSystemAcctId();
            String uploadAcctId = output.getUploadAcctId();
            String uploadDate = output.getUploadDate();

            if (downloadFile.exists()) {
                IOUtils.toFile(new FileInputStream(downloadFile), "E:\\" + uploadDate + "_" + uploadSystemAcctId + "_" + uploadAcctId + "_" + fileName);
            }

        } catch (Exception e) {
            LOGGER.error("Exception = ", e);
        }
    }

至此,文件下载接入告一段落; 欢迎了解 flea-jersey 其他内容 。

标签:文件,String,接入,jersey,flea,output,public,下载,客户端
From: https://blog.51cto.com/huazie/6055875

相关文章

  • 又花了半个小时将 ChatGPT 接入了钉钉机器人
    前面的文章给大家介绍了如何在个人微信中使用ChatGPT,但是大家都知道这种操作是有风险的,所以都让大家使用小号,今天再给大家介绍一下如何在钉钉中使用机器人来调戏AI。流......
  • AppsFlyer SDK 接入( Android )
    第1步:声明存储库在Project项目目录的build.gradle文件中,声明mavenCentral存储库://...repositories{mavenCentral()}///...第2步:添加依赖项在Application的build......
  • 合宙ESP32S3CameraWebServe和homeassistant接入摄像头
    arduino在20年做流光溢彩显示器灯带成功之后就没时间折腾接触这边简单备份成功截图:安装arduinoch340驱动记得装:https://blog.yyzt.site/60/.html参考:https://wiki.......
  • 如何在H5页面或者移动端Uniapp/vue中接入在线客服系统,h5客服系统的接入方法
    通过嵌入JS代码的方式UniApp是一个使用Vue.js框架开发的跨平台应用程序,可以在iOS、Android、H5、微信小程序、支付宝小程序、字节跳动小程序等多个平台上运行。如果要......
  • 如何在自己APP中接入在线客服系统,App接入第三方在线客服系统方法
    很多App都有能直接在App内找到客服咨询入口,方便及时解决客户问题。如果你的app也想要配置客服系统,怎么才能实现?App内需要添加好一个客户咨询按钮,然后在客服咨询按钮点击......
  • chatGPT接入个人微信(国内可用)
    chatGPT最近突然又大火起来了,而且这次不是一般的火,带有浓浓的商业气息火了。各个互联网大厂都开始进军了,感觉要来一场ChatGPT的军备竞赛一样,看看谁先获取国内的地盘。作为......
  • monyog接入ldap认证
    注意:host不要加ldap:// ,直接写IP即可USERDN要写全,跟jenkins一样 用户过滤器直接写ldap的字段,不要写=号啥的,我用的是cn,就直接写cn就好了    然后需要添加......
  • node服务器接入微信与企业微信js-sdk 第二篇
    结合第一篇使用home.jsimportaxiosfrom"axios";//微信asyncgetStoreWXConfig(){try{const{data}=awaitaxios.get("/apiWx/wechat-config",{......
  • jenkins接入ldap
    如果没有ldap插件,需要安装ldap插件配置完一定要先测试成功后在退出登录,否则账号无法登录       ......
  • archery接入ldap
    此处引用网络教程,如有侵权可联系删除: https://blog.csdn.net/zhengchaooo/article/details/108361300 需要值得注意的是1.9版本的archery需要升级 django-auth-lda......