java实现文件的上传和下载,将文件流转base64返回给前端

这篇具有很好参考价值的文章主要介绍了java实现文件的上传和下载,将文件流转base64返回给前端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上传代码

public ResultInfo<?> uploadFile(@RequestParam MultipartFile file, @RequestParam String id) throws BusinessException{
        try {
            if (file.isEmpty()) {
                return JsonResult.error(StatusCode.ERROR_ADD);
            }
            // 获取文件名
            String fileName = file.getOriginalFilename();
            System.out.println("上传的文件名为:" + fileName);
            String preName = fileName.substring(0,fileName.lastIndexOf("."));
            // 获取文件的后缀名
            String suffixName = fileName.substring(fileName.lastIndexOf(".")+1);
            System.out.println("文件的后缀名为:" + suffixName);
            // 设置文件存储路径         *************************************************
            String filePath = "自己的文件路径/";
            String path = filePath + fileName;
            File dest = new File(new File(path).getAbsolutePath());// dist为文件,有多级目录的文件
            // 检测是否存在目录
            if (dest.getParentFile().exists()) {//因此这里使用.getParentFile(),目的就是取文件前面目录的路径
                //如果存在文件夹
                FileSystemUtils.deleteRecursively(dest.getParentFile());// 删除文件夹
            }
            dest.getParentFile().mkdirs();// 新建文件夹
            file.transferTo(dest);// 文件写入
            return this.update(actionData);
        } catch (IllegalStateException e) {
            e.printStackTrace();
            throw new BusinessException("999999", "业务数据操作异常", e);
        } catch (IOException e) {
            e.printStackTrace();
            throw new BusinessException("999999", "业务数据操作异常", e);
        }
    }

文件下载代码

public ResultInfo<?> downloadFile(String fileName , HttpServletResponse response) throws BusinessException{
        if (fileName != null) {
            //设置文件路径
            String filePath = "自己的文件路径"+"/"+fileName;
            File file = new File(filePath);
            if (file.exists()) {
                response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名
                byte[] buffer = new byte[1024];
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                try {
                    fis = new FileInputStream(file);
                    bis = new BufferedInputStream(fis);
                    OutputStream os = response.getOutputStream();
                    int i = bis.read(buffer);
                    while (i != -1) {
                        os.write(buffer, 0, i);
                        i = bis.read(buffer);
                    }
                    return JsonResult.success(bis);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally { // 做关闭操作
                    if (bis != null) {
                        try {
                            bis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return JsonResult.error(StatusCode.ERROR_ADD);
    }

后端通过json拿到文件流的返回,我采用将文件流转成base64返回给前台,实现代码如下:文章来源地址https://www.toymoban.com/news/detail-534426.html

public ResultInfo<?> downloadFile(String fileName ) throws BusinessException{
        if (fileName != null) {
            //设置文件路径
            String filePath = "自己的文件路径/"+fileName;
            String base64 = null;
            InputStream in = null;
            try {
                File file = new File(filePath);
                in = new FileInputStream(file);
                byte[] bytes=new byte[(int)file.length()];
                in.read(bytes);
                base64 = Base64.getEncoder().encodeToString(bytes);
            } catch (Exception e) {
                e.printStackTrace();
                throw new BusinessException("999999", "业务数据操作异常", e);
            }finally {
                if(in!=null){
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                        throw new BusinessException("999999", "业务数据操作异常", e);
                    }
                }
            }
            return JsonResult.success(base64);
        }
        return JsonResult.error(StatusCode.ERROR_ADD);
    }

到了这里,关于java实现文件的上传和下载,将文件流转base64返回给前端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java后端向前端返回文件流——实现下载功能

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月11日
    浏览(35)
  • vue3管理系统中后台返回pdf格式的文件流,前端如何预览?以及uniapp微信小程序中后台返回的base64位的pdf文件如何预览?

    后台返回的是base64格式的pdf文件,首先需要解析base64文件的插件 image-tools 1 安装并引入插件 2 封装预览pdf的函数 3 调用接口获取数据

    2024年01月18日
    浏览(46)
  • JS前端读取本地上传的File文件对象内容(包括Base64、text、JSON、Blob、ArrayBuffer等类型文件)

    FileReader.readAsArrayBuffer() - Web API 接口参考 | MDN FileReader 接口提供的 readAsArrayBuffer() 方法用于启动读取指定的 Blob 或 File 内容。当读取操作完成时,readyState 变成 DONE(已完成),并触发 loadend 事件,同时 result 属性中将包含一个 ArrayBuffer 对象以表示所读取文件的数据。 https://

    2024年02月15日
    浏览(39)
  • 前端FileReader对象实现图片file文件转base64

    1、file转base64具体代码 2、原理解析 ​ 上面封装的方法,其原理主要是借助 FileReader 对象来实现图片格式的转换, FileReader 对象中的 readAsDataURL() 方法,可以读取一个 File 或 Blob 类型的文件,并将其转换为base64格式的字符串。但要注意的一点是:我们通过 readAsDataURL() 方法去读

    2023年04月09日
    浏览(28)
  • java下载指定文件并返回给前端返回流文件

    java下载返回文件流的实现 作为一名经验丰富的开发者,我将教会你如何实现Java下载返回文件流的功能。在这篇文章中,我将分为以下几个部分来详细介绍这个过程: 1.简介 2.实现步骤 3.代码示例 4.总结 在Java开发中,有时候我们需要实现文件下载功能,并且将文件以流的形

    2024年03月15日
    浏览(56)
  • java和js实现前端加密后端解密,后端加密前端解密(Base64)

    目录 1.前端加密后端解密 2.后端加密前端解密 在前端和后端数据传输时,常常涉及到隐私数据的传输(例如用户名和密码),这时,我们就需要对隐私数据进行加密解密 1.前端加密后端解密         1.1 前端jquery实现         1.2后端 2.后端加密前端解密         2.1后端加密

    2024年02月16日
    浏览(41)
  • uniapp 微信小程序base64流转图片

    因为这次后端返回的图片并不是一个http地址,百度找了很久,在此记录 1,新建一个js文件 2.在vue文件中引入 import { base64ToPath} from \\\'./base64src.js\\\' let result = 后端返回的base64流.replace(/[rn]/g, \\\"\\\"); let pdfBase64 = `data:application/pdf;base64,${result}`;

    2024年02月16日
    浏览(38)
  • python篇---base64码流转成图片保存

    2024年02月16日
    浏览(25)
  • 图片文件和 Base64 字符串互转(Java 实现)

      项目中,有些场景下,客户端需要将本地图片传输到服务方存储,此时客户端可以将图片文件转为 Base64 字符串传输到服务方,服务方收到后再将 Base64 字符串还原为图片。以下是一些图片文件和 Base64 字符串互转的工具类,以及校验图片大小的工具。 一、依赖包 二、工

    2024年02月04日
    浏览(45)
  • react将文件转为base64进行上传

    将 图片、pdf、word、excel等文件 进行上传。图片、pdf等调接口A、word、excel等附件调接口B。接口关于文件是 base64格式 的参数 上传资源,区分 影像与附件 使用原生input标签, type=\\\'file\\\' ,进行上传 上传后的回调,对文件进行分类,影像与附件 对文件进行base64编码 执行接口进行

    2024年02月10日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包