# android-lan-file-server **Repository Path**: cuncaojin/android-lan-file-server ## Basic Information - **Project Name**: android-lan-file-server - **Description**: 安卓手机局域网本地文件服务器:Flask 文件浏览与在线预览(PDF/Office/媒体/Markdown),无需公网与账号,微信/iOS 可正常查看 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-02 - **Last Updated**: 2026-10-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # android-lan-file-server **[English](README.en.md) | 简体中文** 在 **安卓手机(Termux Ubuntu 子系统)** 上运行的**局域网本地文件服务器**:手机即服务器,同一 Wi-Fi 下的电脑、平板、其他手机用浏览器打开地址即可浏览和预览你分享的目录——照片、视频、PDF、Word、Excel、PPT、Markdown 在线查看。**无需公网、无需账号、文件不出局域网。**

android-lan-file-server

| 项目 | 说明 | |------|------| | 运行环境 | Termux + Ubuntu 子系统(非 Termux 原生 bash) | | 技术栈 | Python 3 + Flask;前端 HTML/CSS/JS(内嵌 Markdown 渲染) | | 默认监听 | `0.0.0.0:9523`(本机 + 局域网;`127.0.0.1` 仅本机) | | 浏览根目录 | 默认 `/sdcard`,**可指定任意可读目录** | | 数据面 | 直接读取 proot 已绑定的安卓路径 | | 认证 | 无(同网段设备按你放开的目录访问;不要把服务暴露到不可信网络) | | 本机私有配置 | `android-lan-file-server.local.conf`(**gitignore 不入库**,换机器后需自行创建,见 4.1) | > **注意(换机器克隆后必读)**:个人专属配置(如默认目录 `DEFAULT_ROOT`)写在 `android-lan-file-server.local.conf` 中, > 该文件被 gitignore 排除,**不会随仓库一起被克隆到新机器**。新机器上启动前请先创建它,否则只有通用模板默认值: > > ```bash > # 三行即可,详见 4.1 节「本地私有配置」 > echo "DEFAULT_ROOT=/sdcard/你的目录" > android-lan-file-server.local.conf > ``` > > 启动时横幅会显示「本地私有配置」的加载状态,未创建时也会提醒。 --- ## 界面截图 真机浏览器访问 `127.0.0.1:9523` 的实际效果(深色主题): | 文件列表 · ⋮ 菜单 | Markdown 在线预览 | Word/Excel 转 PDF 预览 | | :---: | :---: | :---: | | 文件列表与 ⋮ 菜单 | Markdown 在线预览 | Word 转 PDF 预览 | | JSON 代码查看 | 网页(HTML)在线预览 | | :---: | :---: | | JSON 代码查看 | HTML 在线预览 | --- ## 使用场景 - **局域网即分享**:朋友/同事与你连同一个 Wi-Fi,浏览器打开你手机的地址就能浏览你放开的目录——不用微信传文件、不用网盘上传再下载 - **手机文件,大屏看**:拍的照片和视频、工作报告(Word/Excel/PPT)在电脑浏览器里直接预览、下载,支持拖动进度、在线翻页 - **会议室临时共享**:把资料目录开出来,在场所有人的设备扫一眼地址、点开即取,散会即停 - **纯本地不外传**:服务只监听局域网,文件不经过任何公网服务器与第三方账号,敏感资料也能放心共享 - **手机当轻量 NAS**:长期跑在后台(`ANDROID_LAN_DAEMON=yes`),家里/宿舍设备随时访问手机里的资料盘 --- ## 1. 功能能力 ### 1.1 文件浏览 - 目录树 / 顶栏两行式导航 / 下拉刷新 - 顶栏第一行显示**当前目录名**,第二行显示**父目录完整路径**(超长可换行);点击路径中任意一段直达该目录,分享根之外的段按 `ALLOW_OUTSIDE_ROOT` 决定可点或置灰 - 手机/平板**下拉即可刷新**当前目录(触摸设备不显示刷新按钮,桌面浏览器仍保留) - 中文路径、空格路径 - 文件名**换行完整显示**(不截断省略号);**单击条目即可进入**该目录或预览页(整行可点),文件相关操作都收在预览页顶栏 `⋮` 菜单里 - 工具栏左侧显示当前目录 **N 项**计数(截断时标注),右侧为目录树与名称筛选 - 列表页顶栏 `⋮` 菜单:**显示隐藏文件(全局开关,所有目录统一生效并跨会话记忆)/ 复制完整路径 / 复制文件名 / 排序方式(名称·时间 × 正序·倒序,跨会话记忆)/ 关于**(含版本号与 Gitee、GitHub 仓库链接,点遮罩可直接跳过) - 排序默认名称正序、目录始终置顶;**目录树子目录使用同一排序**,与右侧列表顺序始终一致;该顺序同时决定预览页双指滑动的切换顺序 - **手机返回键优先关闭浮层**:⋮ 菜单、关于弹窗、目录树面板打开时,按返回先收起它们,而不是直接离开页面;点选/点外关闭不会留下多余历史记录 - 移动端卡片式两行:名称占整行,`大小 · 时间` 排第二行 - 从预览返回列表时**自动定位并聚焦刚看过的文件** - 超大目录会截断列表(默认最多约 5000 条) ### 1.2 在线预览(浏览器内,不强制下载) | 类型 | 扩展名(示例) | 预览方式 | |------|----------------|----------| | PDF | `.pdf` | 内置 PDF.js 渲染到 canvas(微信/QQ 内置浏览器、iOS 等 iframe 白屏场景可正常查看) | | PPT/PPTX | `.ppt` `.pptx` `.pps` `.ppsx` `.odp` | 优先 LibreOffice 转 PDF 内嵌预览;失败则提取幻灯片文本;再失败仅下载 | | Word/Excel | `.doc` `.docx` `.odt` `.rtf` `.xls` `.xlsx` `.ods` | LibreOffice(writer/calc 组件)按文档版面/A4 分页转 PDF 内嵌预览;未装或转换失败则提供下载 | | Markdown | `.md` `.markdown` … | 服务端回传原文,`md.js` 客户端渲染(可切源码) | | 纯文本 | `.txt` `.log` `.json` `.yml` `.py` … | 行号 / 换行开关、字号缩放(默认不换行);`.json` 自动格式化,可切回源码 | | 音频 | `.mp3` `.m4a` `.wav` `.flac` `.ogg` … | HTML5 `