首页 > 其他分享 >(Spring)文件上传和下载

(Spring)文件上传和下载

时间:2022-09-05 15:47:35浏览次数:75  
标签:文件 outputStream 浏览器 Spring file new 上传 下载

文件上传的时候,浏览器将图片以MultipartFile的形式传到服务器,服务器将保存完的图片名响应给浏览器。

文件下载的时候,浏览器收到图片名,再向服务器请求图片资源,服务器以流的形式在浏览器上显示。

所以在浏览器的视角里,上传完图片就能立刻看到效果。

 

步骤:

1:文件上传

 /**
     * 文件上传
     * @param file
     * @return
     */
    @PostMapping("/upload")
    public R<String> upload(MultipartFile file){
        //file是个临时文件,需要转存到指定位置,否则本次请求完成后临时文件会删除

        // 原始文件名
        String originalFilename= file.getOriginalFilename();
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));

        // 使用UUID重新生成文件名,防止文件名称重复造成文件覆盖
        String fileName = UUID.randomUUID().toString() + suffix;

        // 创建一个目录对象
        File dir = new File(basePath);
        // 判断当前目录是否存在
        if(!dir.exists()){
            // 目录不存在,需要创建
            dir.mkdirs();
        }

        try {
            //文件转存
            file.transferTo(new File(basePath + fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return R.success(fileName);
    }

  

2:文件下载

/**
     * 文件下载
     * @param name
     * @param response
     */
    @GetMapping("/download")
    public void dewnload(String name, HttpServletResponse response){

        try {
            //输入流,读取文件内容
            FileInputStream fileInputStream = new FileInputStream(new File(basePath + name));

            //输出流,通过输出流将文件写回浏览器,在浏览器展示图片
            ServletOutputStream outputStream = response.getOutputStream();

            response.setContentType("image/jpeg");

            int len = 0;
            byte[] bytes = new byte[1024];
            //使用bytes数组从输入流读取图片内容,然后再写入输出流
            while((len = fileInputStream.read(bytes)) != -1){
                outputStream.write(bytes,0,len);
                outputStream.flush();
            }

            // 关闭资源
            outputStream.close();
            fileInputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

  

标签:文件,outputStream,浏览器,Spring,file,new,上传,下载
From: https://www.cnblogs.com/xiaochaoheni/p/16658278.html

相关文章

  • 下载前端项目中自带的文件到本地
    functiondownload(down_questionNo,type){$.ajax({url:"/comtion-web/doc/"+down_questionNo+type,//本地文件存放的位置type:"GET",async:false,mimeType......
  • SpringBoot-整合Druid
    1.添加jar包<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>......
  • 14.Springboot多环境配置2
    1.主配置文件application.ymlspring:profiles:active:@profile.active@#需要在pom文件中指定变量#active:pro#include:mvcgroup:"pro......
  • 干货 | web自动化总卡在文件上传和弹框处理上?
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取在有些场景中,需要上传文件,而Selenium无法定位到弹出的文件框,以及网页弹出的提醒。这些都是需......
  • Spring Cloud Security OAuth2.0学习
    一、OAuth2授权机制1.1为什么需要OAuth2授权参考OAuth2.0的一个简单解释-阮一峰的网络日志(ruanyifeng.com)1.2OAuth2四种授权方式参考OAuth2.0的四种方式-......
  • 批量合并手机上下载的B站视频
    importosimportsubprocess#进行命令行操作defmerge(inDir,outDir,ffmpeg):av_list=os.listdir(inDir)#获取视频列表,视频目录名就是视频的av号......
  • HTML编辑器如何能实现直接粘贴把图片上传到服务器中
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordAction......
  • Spring事务
    1.事务的四大特性(ACID)●原子性(Atomicity)共生死,要么全部成功,要么全部失败!●一致性(Consistency)事务在执行前后,数据库中数据要保持一致性状态。(如转账的过程账户......
  • springboot聚合项目搭建
    springboot聚合项目搭建1、简介1.1、什么是聚合项目?一个项目中包含多个子项目的项目。结构:|-父模块---|子模块1---|子模块2---|子模块31.2、聚合项目有什么......
  • 6个基于 Spring Boot 的开源社区项目!功能强大,界面炫酷
    整理了6个不错的基于SpringBoot开发的社区类项目,每个都非常不错!你可以参考这些项目用来作为自己的项目经验,或者你可以基于这些项目搭建一个自己的知识社区。原创不......