news 2026/6/13 23:02:04

如何使用JAVA代码访问本地存储的文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何使用JAVA代码访问本地存储的文件

在日常的开发的,存储文件我们一般会用到云存储,如阿里云,华为云等。云存储的 URL 可以直接在浏览器访问,因为对象存储 OSS 支持 HTTP 直连访问,只要权限允许,URL 就是一个公网资源地址。但是在开发中,如果我们想把文件存储在本地的服务器中,我们通常会有两种方法。1 使用二进制流访问文件信息,2 通过nginx代理访问信息。下面来演示这两种方法。

1.使用二进制流如何下载本地文件

典型场景:

前端传一个文件存储路径(本地磁盘)
后端用二进制流读取文件 → 返回给浏览器下载

一、Controller 下载接口(核心代码)

支持:本地文件路径 → 浏览器下载

@GetMapping("/download") public void download(@RequestParam("path") String filePath, HttpServletResponse response) { File file = new File(filePath); if (!file.exists()) { throw new RuntimeException("文件不存在:" + filePath); } response.setContentType("application/octet-stream"); response.setCharacterEncoding("utf-8"); // 文件名处理(防止中文乱码) String fileName = URLEncoder.encode(file.getName(), StandardCharsets.UTF_8) .replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + fileName); try (InputStream in = new BufferedInputStream(new FileInputStream(file)); OutputStream out = new BufferedOutputStream(response.getOutputStream())) { byte[] buffer = new byte[8192]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } out.flush(); } catch (Exception e) { throw new RuntimeException("文件下载失败", e); } }

二、前端访问方式

浏览器直接访问:

http://localhost:8080/download?path=/data/files/test.pdf

就会自动下载文件。

2.使用ngnix代理访问本地存储文件

使用 Nginx 代理访问本地存储文件是生产环境里非常常见、性能也最好的方案(比 Java 流式下载更快、更省服务器资源)。

一、场景示意

假设:

服务器磁盘目录: /data/files/ ├── a.pdf ├── img.png └── report.docx

你希望访问:

http://your-domain/files/a.pdf

直接打开 / 下载文件。

二、Nginx 配置(核心)

编辑 nginx 配置文件:

vim /etc/nginx/nginx.conf

添加:

server { listen 80; server_name localhost; # 或你的域名 / IP location /files/ { alias /data/files/; # ⚠️ 必须以 / 结尾 autoindex off; # 关闭目录浏览(安全) # 下载文件(强制下载) add_header Content-Disposition attachment; # 允许大文件 client_max_body_size 1024m; } }

关键说明(非常重要)

location /files/访问路径前缀

alias /data/files/ 映射到磁盘目录

三、重载 Nginx

nginx -t # 检查配置是否正确 nginx -s reload

四、访问测试

浏览器访问:

http://localhost/files/a.pdf

如果能下载,说明配置成功 ✅

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 17:44:50

黑词分析前端组件设计:双面板交互与黑词进度监控

前言 在内容安全、情报分析等领域,黑词(敏感词汇)分析是核心工作之一。本文深入解析一个企业级的黑词分析组件前端实现,该系统采用双面板交互设计、黑词进度监控和多维度分析,为安全分析人员提供高效、直观的操作界面…

作者头像 李华
网站建设 2026/6/11 19:42:00

一个SQL注入漏洞就能让整个网站大变样,从SQL注入到XSS攻击,完整还原黑客是如何篡改网站的_黑客攻击修改网站内容

在网络攻击事件中,SQL 注入与XSS 攻击是最常见的组合拳 —— 前者如同打开网站 “后门” 的钥匙,帮助黑客突破数据库与服务器权限;后者则像 “隐形画笔”,让黑客能随意篡改页面内容、劫持用户操作。本文将拆解这两种漏洞的技术原理…

作者头像 李华
网站建设 2026/5/27 22:34:14

软件测试详解(黑盒测试、白盒测试)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 软件测试方法大类上分为黑盒测试、白盒测试和灰盒测试三种 一、黑盒测试 黑盒测试通俗来说即不知道代码是怎么写的。具体实现逻辑,基于代码输入有哪些…

作者头像 李华
网站建设 2026/6/13 7:08:42

收藏必看!大模型微调全攻略:9大PEFT方法详解,小白也能轻松掌握

大模型参数高效微调(PEFT)有九大主流方法,包括适配器、软提示等。这些方法主要在2021-2023年创立,后续多为小改进。工程应用推荐Adapter/LoRA,可在有限硬件上高效微调模型。 整体来看,主要分以下六大派系。 添加派(Additive) 添加…

作者头像 李华
网站建设 2026/6/12 11:52:00

<AI讲故事> 之《蝴蝶的一生》

故事通过小斑点从虫卵到蝴蝶的奇妙蜕变,展现了生命的循环与成长。 故事从康康和安安发现蝴蝶卵开始,讲述毛毛虫蜕皮、化蛹蜕变、最终展翅飞翔的全过程。孩子们在奶奶的引导下观察自然奥秘,见证了生命的奇迹。最后新一代虫卵的出现&#xff0c…

作者头像 李华