相关文章推荐
开心的遥控器  ·  最高人民法院发布第35批指导性案例-天津一中院·  7 月前    · 
温柔的茴香  ·  2023年4月大事记-安康市档案局·  9 月前    · 
踏实的茄子  ·  【C++】C++11——新的类功能|defa ...·  1 年前    · 
逆袭的芒果  ·  FAQ: Addressing ...·  1 年前    · 
发呆的哑铃  ·  雷神笔记本哪款性价比高型号规格 - 京东·  1 年前    · 
Code  ›  spring webflux文件上传下载开发者社区
response 文件上传
https://cloud.tencent.com/developer/article/1340287
一直单身的台灯
1 年前
作者头像
code4it
0 篇文章

spring webflux文件上传下载

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 码匠的流水账 > spring webflux文件上传下载

spring webflux文件上传下载

作者头像
code4it
发布 于 2018-09-17 15:53:59
2.5K 0
发布 于 2018-09-17 15:53:59
举报

序

本文主要讲述一下spring webflux的文件上传和下载。

maven

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

文件上传

@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Mono<String> requestBodyFlux(@RequestPart("file") FilePart filePart) throws IOException {
        System.out.println(filePart.filename());
        Path tempFile = Files.createTempFile("test", filePart.filename());
        //NOTE 方法1
        AsynchronousFileChannel channel =
                AsynchronousFileChannel.open(tempFile, StandardOpenOption.WRITE);
        DataBufferUtils.write(filePart.content(), channel, 0)
                .doOnComplete(() -> {
                    System.out.println("finish");
            .subscribe();
        //NOTE 方法二
//        filePart.transferTo(tempFile.toFile());
        System.out.println(tempFile.toString());
        return Mono.just(filePart.filename());
    }

使用RequestPart来接收,得到的是FilePart FilePart的content是Flux,可以使用DataBufferUtils写到文件 或者直接使用transferTo写入到文件

文件下载

    @GetMapping("/download")
    public Mono<Void> downloadByWriteWith(ServerHttpResponse response) throws IOException {
        ZeroCopyHttpOutputMessage zeroCopyResponse = (ZeroCopyHttpOutputMessage) response;
        response.getHeaders().set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=parallel.png");
 
推荐文章
开心的遥控器  ·  最高人民法院发布第35批指导性案例-天津一中院
7 月前
温柔的茴香  ·  2023年4月大事记-安康市档案局
9 月前
踏实的茄子  ·  【C++】C++11——新的类功能|default、delete|可变参数模板|emplace-腾讯云开发者社区-腾讯云
1 年前
逆袭的芒果  ·  FAQ: Addressing ArcGIS Pro 3.0 Microsoft .NET Desktop Runtime (x64)requirement | Esri Australia Technical Blog
1 年前
发呆的哑铃  ·  雷神笔记本哪款性价比高型号规格 - 京东
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号