跳至主要内容

AndSever 2 如何实现下载文件

AndSever 2 如何实现下载文件

AndSever 2 如何实现文件下载

关于 AndSever 2

AndServer是Android平台的Web Server和Web Framework。 它基于编译时注解提供了类似SpringMVC的注解和功能,如果您熟悉SpringMVC,则可以非常快速地掌握它。

源码地址: https://github.com/yanzhenjie/AndServer
文档地址: https://www.yanzhenjie.com/AndServer
旧版文档: https://www.yanzhenjie.com/AndServer/1.x

特性

  • 部署静态网站
  • 使用注解开发Http Api
  • 全局请求拦截器,使用注解,全局多个
  • 全局异常处理器,使用注解,全局唯一
  • 全局消息转换器,使用注解,全局唯一

依赖

添加依赖时请替换下述 {version} 字段为 Github上公开的最新版本号。

dependencies {
    implementation 'com.yanzhenjie.andserver:api:{version}'
    annotationProcessor 'com.yanzhenjie.andserver:processor:{version}'
}

读者要求

  • 具有 Android 开发基础
  • 使用 AndSever 开发过简易的 API 接口
  • 官方文档已在本文开始部分给出
  • 如有不会,请科学上网方可给我留言~

问题

如何实现文件下载 ?

@Controller
@RequestMapping(path = "/api/peoplePhoto")
public class FileController {
    /**
     * 下载图片文件接口
     *
     * @param imageId  图片的Id
     * @param response 框架自带
     */
    @GetMapping("/download")
    public void download(@QueryParam(name = "imageId") String imageId, HttpResponse response) {
        String path = PeoplePhotoModel.getInstance()
                .retrieveByImageId(imageId)
                .getImagePath();
        File file = new File(path);
        FileBody fileBody = null;
        if (file.exists()) {
            fileBody = new FileBody(file);
        }
        ResponseBody responseBody = fileBody;
        response.setBody(responseBody);

    }

}

注意:类注解要用 @Controller

评论

此博客中的热门博文

Lambda can be replaced with method reference

Lambda can be replaced with method referenceAndroid开发的时候提示 Lambda can be replaced with method reference只需要按下 Alt + Enter 即可效果如下参考资料How to change Runnable to lambda expression in Java with IntelliJ shortcut

ffmpeg 音频淡出淡出并调整音量

ffmpeg 音频淡出淡出并调整音量1 淡出淡入ffmpeg -i 青花瓷.aac -filter_complex "[0:a]afade=t=in:ss=0:d=5[a1]; [a1]afade=t=out:st=60:d=5[a2]; [a2]volume=0.1" t.mp3 青花瓷.aac 是第0个输入文件
[0:a] 代表是处理第0个输入文件的(Audio)音频文件[0:a]afade=t=in:ss=0:d=5[a1] 处理 [0:a] 资源从第 0 秒开始淡入,持续5秒 ,并标记这个过滤器名为 [a1]
过滤器名字可以随便取,但要符合命名规范,请自行查询 ffmpeg 过滤器命令规范。[a1]afade=t=out:st=60:d=5[a2] 处理 [a1] 的资源,从第60秒开始淡出,持续5秒。注意:淡出结束后,后面的音频将全部静音[a2]volume=0.1 2 处理音频处理 [a2] 资源的音量,为原来的 0.1 倍音量。t.mp3 为输出的音频

ffmpeg-filter 使用指南

ffmpeg-filter 使用指南说明只是一份备份。查看原文作者:hguoFilter 思想filter 架构思想中第一个概念是 Graph,一般翻译为画布,如果 Graph 看做是桌子的话,那 filters 们就是桌子上的“悲剧”。所以先要有 Graph,然后再将 filter 摆在上面, filter是身上有 pin 接口, pin 的作用是统一数据接口,然后还需要一个 link 的动作, link 的作用是将指定的 2 个 filter 通过其 pin 接口连接起来,这样就形成了一个完整的 filter graph或是叫 filter link list。List item如果只有 filter graph 的存在,它只是一堆参数数据和代码,并不能运行,需要一个动力泵或是动力引擎将整个过程驱动起来,这就像人还缺一颗心脏一样,那人的血液就是filter graph 的数据流。这样 FFmpeg 就把驱动的能力交给了 filter 框架外面来做,通过向 filter graph 的首个 filter 推数据和从 filter graph 的末尾 filter 拉数据从而驱动整个 filter graph 的数据流动。命令行使用命令ffmpeg -i file_copy.ts -i logo.png -filter_complex " [1:v]scale=100:100[logo]; [0:v][logo]overlay=x=main_w-100:y=main_h-100" output.mp4 参数简记-filter_complex:滤镜必选参数,后面跟滤镜命令[1:v] :输入pin,表示视频的第1路scale=100:100 :对[1:v]输入pin的处理,缩放成100:100[logo] :输出pin; 每个滤镜分割0:v :两个输入,第一个视频,上一个滤镜的输出overlay=x=main_w-100:y=main_h-100 :滤镜动作