Java教程:如何读取服务器文件并推送到前端并下载,图片格式以浏览器渲染模式

这篇具有很好参考价值的文章主要介绍了Java教程:如何读取服务器文件并推送到前端并下载,图片格式以浏览器渲染模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

起因:

----在我们做文件上传时,通常会保存文件的相对路径在数据库中,然后返回前端http访问路径,来对文件进行下载或图片预览功能,但是有时候我们并不想直接返回文件访问地址给前端,这就用到了Java当中的文件输入输出流,将文件以流的方式响应给浏览器,并渲染出图片或下载,接下来就列出具体代码,供大家使用

Java后端代码:

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.*;

/**
 * 文件流-Controller
 */
@Slf4j
@RestController
@RequestMapping("/fileStream")
public class FileStreamController {

    /**
     * 获取文件流
     *
     * @param fileAddress 文件地址
     * @return
     */
    @GetMapping("/getFileStream")
    public void getFileStream(@RequestParam("fileAddress") String fileAddress, HttpServletResponse response) {
        File file = new File("文件路径");
        if (!file.isFile()) {
            throw new RuntimeException("文件不存在");
        }

        // 设置响应类型
        if ("jpg/jpeg/png/bmp/gif/tif/icon/ico".contains(file.getName().substring(file.getName().lastIndexOf(".") + 1).toLowerCase())) {
            response.setContentType("text/html; charset=UTF-8");
            response.setContentType("image/jpeg");
        } else {
            response.setContentType("application/octet-stream;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + file.getName());
        }

        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            inputStream = new FileInputStream(file);
            outputStream = new BufferedOutputStream(response.getOutputStream());

            byte[] buffer = new byte[1024];
            while (true) {
                int len = inputStream.read(buffer);
                if (len == -1) {
                    break;
                }
                outputStream.write(buffer, 0, len);
            }
            outputStream.flush();
        } catch (Exception e) {
            log.error("文件读取异常,原因:{}", e.toString());
            throw new RuntimeException("文件读取异常");
        } finally {
            try {
                if (outputStream != null) {
                    outputStream.close();
                }
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

效果:

当我们路径设置为图片时,浏览器访问结果如下:

java 后端从本地获取文件下载到前端,java,服务器,前端

当我们路径设置为其他文件时,则为下载:

java 后端从本地获取文件下载到前端,java,服务器,前端

本次教程到这里就结束了,希望大家多多关注支持(首席摸鱼师 微信同号),持续跟踪最新文章吧~文章来源地址https://www.toymoban.com/news/detail-774016.html

到了这里,关于Java教程:如何读取服务器文件并推送到前端并下载,图片格式以浏览器渲染模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • CSV导出(通过读取数据字节流直接上传文件到服务器)

    文件之前读取大多数都是用前端点击相应传入后端,通过HttpServletResponse response得输入输出流进行导入导入导出数据。 近期碰到得需求是定时查询数据库数据并通过csv文件上传至系统。所以不能使用HttpServletResponse,因为对应文件流比较熟悉所以最开始使用文件流进行读写数据

    2024年02月12日
    浏览(38)
  • java读取服务器数据包并下载至本地目录

    jsch包如果没有的话,可评论联系我,我私发给你,或者通过https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.55进行下载,添加至工程目录

    2024年02月09日
    浏览(29)
  • 对读取的Excel文件数据进行拆分并发请求发送到后端服务器

    首先,我们先回顾一下文件的读取操作: 本地读取Excel文件并进行数据压缩传递到服务器-CSDN博客 第一步:根据以上博客,我们将原先的handleFile方法,改为以下内容: 先对data数据进行打印,获取到一千多行的数据信息 那么如何对1000多条信息进行分组处理呢???  因为我

    2024年01月23日
    浏览(29)
  • 如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程)

     2023年中旬,参加了一个比赛,需要搭建一个网站。在不断探索琢磨之后,搭建了一个基于flask的web。直接上干货: 一、首先,在本地准备好自己的flask项目。包括最基本的三个文件: 然后准备生成requirements.txt文件,这个文本文件会告诉服务器你的项目运行所需要的环境,即

    2024年02月04日
    浏览(37)
  • 【OPCUA】使用Java开源项目milo连接KEPServerEX6服务器并读取值

    准备工作: 开发环境:KEPServerEX-6.x,JDK-8,milo-0.2.4 KEPServerEX下载:https://pan.baidu.com/s/1kbAh46cCYV0JGeXm3kuX5A?pwd=hy71  提取码:hy71(非破解版,可以自行去官网下载,安装过程一直点下一步就好了) 项目代码:UseMilo 参考文章:使用java的milo框架访问OPCUA服务的方法 文章简介: 使用

    2024年02月04日
    浏览(40)
  • 如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?

    在使用若依前后端分离打包部署到服务器上后,可能会出现主包无法找到从包中的文件的问题,这个问题通常是由于资源文件没有正确地打包到 jar 包中导致的。本文将介绍如何解决这个问题,包括如何在 Java 代码中访问 jar 包中的资源文件、如何将资源文件复制到系统临时目

    2024年02月22日
    浏览(38)
  • Rclone传输文件到服务器或者从服务器到本地教程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 最近有从linux服务器传输大量文件的需求,通过常规的xshell工具十分缓慢,最终还是自己配置了rclone,这里是记录配置过程,以防后续遗忘。 https://rclone.org/downloads/这是官网地址,windows进去下载解压就可

    2024年02月03日
    浏览(65)
  • 基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

    在前文中:ESP32的web服务器(内嵌HTML)_你的幻境的博客-CSDN博客 已经实现建立了一个WEB服务器了,但是页面的HTML代码是镶嵌在C语言代码中的,大部份情况下,不管是调试或者使用都是很不方便的。但是ESP32的SPIFFS提供了很好的解决方法,SPIFFS相当于ESP32中的一个硬盘分区,每种版

    2024年02月02日
    浏览(37)
  • Nginx搭建文件下载服务器教程!

    搭建基于Nginx的文件下载服务器非常简单。以下是教程: 安装Nginx: 在终端中执行以下命令以安装Nginx: 配置Nginx: 打开Nginx配置文件进行编辑: 修改配置文件: 在  http 块内添加以下配置: 保存并关闭配置文件: 按下  Ctrl + X ,然后输入  Y 来保存更改并关闭编辑器。 测

    2024年02月07日
    浏览(39)
  • 详解如何使用Nginx搭建文件服务器及实现文件服务

    公司最近有做文件服务器的需求,并且使用到了Nginx做负载均衡服务器,顺水推舟,就想着顺便用作文件服务器算了,实际上它也非常适合。 Nginx是一种轻巧、高效的Web服务器,用作文件服务器非常合适。但是如果需要一些高级功能,如FTP远程访问、多用户管理,可能需要选

    2024年02月09日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包