使用AndServer框架开发一个文件上传、下载的应用--第二版

Android实现WebServer(服务端)之AndServer 大开眼界,Android竟然也可以写应用服务端了~ 阅读详情
AI摘要

本文介绍基于AndServer 2.1.10/7框架在Android平台构建内嵌HTTP服务器的文件上传与下载应用,集成WebView展示HTML前端界面,后端由AndServer处理HTTP请求,前端采用Bootstrap 4、Vue 3和jQuery实现交互;支持局域网跨设备访问,涵盖文件列表获取、断点续传(隐含)、SQLite本地存储(LitePal)等关键技术。

一、前言

其实去年我已经用过AndServer框架去写了一个文件上传、下载的App(文章地址),但是比较简陋。今年我用了最新版本的AndServer 2.1.10框架,又写了一个文件上传、下载的应用,目的其实是想练习一下css。新版Demo我加了不少的HTML页面,应用的部分截图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从截图中就可以看出来,该应用具有注册、登录、重置密码、修改密码、文件上传、文件下载以及日记等功能。
该程序集客户端、服务端于一体,其中AndServer框架提供了服务端的支持,原生的Activity里面嵌入了一个WebView用于显示网页。当然,网页的内容也是需要自己去写的,这部分就充当客户端。那么,其他设备要怎么访问Cowcat服务器(装了该应用的手机)上的资源呢?其实非常简单,其他设备只需要和Cowcat服务器连接至同一个网络,然后在浏览器地址栏里面输入标题栏上的地址即可(上图中的192.168.0.101:8080就是服务器的地址,当然在你的手机上显示的可能会有差异,根据实际情况去输入即可)。之所以在原生的Activity里面嵌入一个Webview,主要是为了方便查看效果,在浏览器里面直接输入服务器的地址也是可以看到效果的。

二、开发工具

  • Android Studio Bumblebee (小蜜蜂版本,还是比较新的)
  • Visual Studio Code (用于编辑H5代码,因为在AS里面编辑H5代码不方便,所以用这个)

三、使用的关键框架

3.1 HTML 页面框架

  • Bootstrap 4
  • Vue 3
  • JQuery 3.2.1
  • jquery.form 4.3.0 (用于异步文件上传,支持显示上传进度)

3.2 Android原生框架

四、关键代码

3.1 文件上传

实现文件上传的后端代码其实很简单,因为AndServer框架已经帮我们做了很好的封装,不过目前我发现2.1.10版本的上传速度比较慢,如果您有优化建议,欢迎提出来。
(后续:速度慢的问题于2026-3-28已解决,升级AndServer版本至2.1.12就好了)

3.1.1 后端

/**
     * 上传文件
     * @param request
     * @param response
     * @param file
     * @return
     */
    @Deprecated
    @PostMapping(path = "/uploadFile")
    String uploadFile(HttpRequest request, HttpResponse response, @RequestParam(name = "fileName") MultipartFile file,@RequestParam(name = "userName") String userName) {
        try {
            File uploadFile = FileUtils.createUploadFile(file);
            LyyLogUtil.logD("用户上传的文件的保存路径:"+uploadFile.getAbsolutePath());
            file.transferTo(uploadFile);
        } catch (Exception e) {
            e.printStackTrace();
            LyyLogUtil.logE("服务器接收文件出现异常!"+e.getMessage());
        }
        return "文件上传成功!";
    }

3.1.2 HTML前端

HTML页面的代码我就不贴了,因为比较长。其实无非就是使用file类型的Input,再加上jquery.form,就能轻松完成前端的工作。

3.2 文件下载

文件下载的后端代码略微复杂一点点,既然是下载文件,首先得把文件列表给列出来,然后再根据文件名去下载对应的文件。
同样的,这里就不贴上文件下载的前端HTML代码了,在HTML代码里,实现文件下载更加简单,只要访问对应的URL地址就可以了。

3.2.1 获取文件列表

/**
     * 获取文件列表
     * @param request
     * @param response
     * @return
     */
    @GetMapping(path = "/getFileList", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ReturnData getFileList(HttpRequest request, HttpResponse response){
        ReturnData returnData=new ReturnData();
        List<LyyFile> list=new ArrayList<>();
        File file=new File(FileUtils.filePath);
        File[] files = file.listFiles();
        if (files!=null&&files.length>0){
            Arrays.sort(files, new Comparator<File>() {//按文件的修改日期递减排序
                @Override
                public int compare(File f1, File f2) {
                    long diff = f1.lastModified() - f2.lastModified();
                    if (diff > 0)
                        return -1;
                    else if (diff == 0)
                        return 0;
                    else
                        return 1;
                }

                @Override
                public boolean equals(@Nullable Object obj) {
                    return true;
                }
            });
              for (File f : files) {
                LyyFile lyyFile = new LyyFile();
                lyyFile.setFileName(f.getName());
                lyyFile.setFileSize(""+f.length());
                lyyFile.setDir(f.isDirectory());
                lyyFile.setModifiedDate(""+f.lastModified());
                lyyFile.setFilePath(f.getAbsolutePath());
                list.add(lyyFile);
            }
            returnData.setSuccess(true);
        }else {
            returnData.setSuccess(false);
            returnData.setErrorCode(512);
            returnData.setErrorMsg(ErrCodeUtil.map.get(512));
        }

        returnData.setData(list);
        return returnData;
    }

3.2.2 下载文件

/**
     * 下载文件
     * @param response
     * @param fileName
     * @return
     */
    @GetMapping(path = "/downloadFile")
    public ResponseBody downloadFile(HttpResponse response, @RequestParam(name = "fileName") String fileName){
        File file=new File(FileUtils.filePath+File.separator+fileName);
        FileBody body=new FileBody(file);
        response.setHeader("Content-Disposition", "attachment;filename="+fileName);
        return body;
    }

四、软件成品及源码

项目仍在维护,随时会有更新,有更新后我会及时提交到码云上。

4.1 安装包

通过网盘分享的文件:app-debug.apk
链接: https://pan.baidu.com/s/1FU1yZpmdwd9qGNYmjwQ2cQ?pwd=kwrj 提取码: kwrj
–来自百度网盘超级会员v4的分享

4.2 项目地址

为了大家可以轻松访问,我放到码云上了,而不是放github。
点我跳到码云

基于AndServer框架的安卓Web服务器搭建:实现局域网内高效文件管理 本文详细介绍了如何使用AndServer框架将安卓设备快速搭建为局域网Web服务器,实现高效的文件上传、下载与管理。通过清晰的步骤讲解和关键代码示例,帮助开发者解决团队文件共享、家庭媒体中心等场景下的传输难题,充分利用局域网带宽实现便捷的文件互传。 阅读详情

相关推荐

手机服务器项目实战:AndServer应用源码解析

AndServer框架是一个专为Android平台打造的轻量级HTTP服务器框架。它以Java语言编写,能让我们在Android应用中轻松地添加Web服务功能。它具有易于集成、高效率和低资源消耗的特点,适用于需要快速搭建HTTP服务的应用场景。通过AndServer,开发者可以运行简单的Web应用,提供RESTful API接口,甚至构建完整的Web服务系统。

weixin_42511832的博客 1116

AndServer,一个Android端的web服务器

开源地址:https://github.com/yanzhenjie/AndServer AndServer是一个Android端的Web服务器,类似Apache或者Tomcat,但又有不同,它是一个普通的Android Library,Android项目Gradle远程依赖或者添加Jar包皆可引入该项目,然后就通过正常Android开发一样开发App了。 AndServer是用纯Androi...

大新软件老杨 3723

andserver-1.0.3.rar

andserver-1.0.3.rar

Android AndServer本地服务器

AndServer 是一个 HTTP 和反向代理服务器。Android平台的Web服务器和Web框架。它提供了像SpringMVC一样的注解,如果你熟悉SpringMVC,你可以很快掌握它。

weixin_69539235的博客 3487

AndServer_worldx7x_AndServer安卓_AndServersource_zip_

AndServer Source for Android

Android利用Andserver搭建服务器的详细教程

效果 需求   在手机上有一个功能,但是需要使用电脑控制什么时候开始这个功能,然后上网搜索,找到了AndServer可以满足要求,我只是实现了简单的功能,如果感兴趣的话,可以深入的研究一下。 地址如下:https://github.com/yanzhenjie/AndServer 1.步骤引入 implementation ‘com.yanzhenjie:andserver:1.0.2’ 2.申请权限 <uses android:name=”android.permission.INTERNET”> 3.初始化server private void ini

利用AndServer框架把安卓手机变成Web服务器实现局域网文件上传、下载功能

一、前言 AndServer框架的作者是严振杰,关于该框架的使用方法,他的博客有对应的文章。不过,该文章有些老旧了,因为上边给出的github项目与该文章所讲的并不匹配。即使是下载了sample,菜鸟也不知道如何实现文件的下载功能,因为sample里面只有文件上传的例子。为此,本人阅读了其他博主相关的文章,自己实现了文件上传、下载的功能。 AndServer框架可以把安卓手机变身为一台Web服务器,其他设备只需要和该手机连接同一个网络,在浏览器输入相应的地址,就可以访问、操作该手机(Web服务器)上的资源

英勇的博客 6849

保姆级教程:用Docker一键部署vLLM大模型推理服务(附常见报错解决方案)

本文提供了一份详细的Docker化vLLM大模型推理服务部署指南,涵盖从环境准备到性能调优的全流程。通过容器化技术解决大语言模型部署中的显存利用率、吞吐量等核心问题,并附常见报错解决方案,帮助开发者快速构建高效、可扩展的AI推理服务。

weixin_29248313的博客 492

安心使用AndServer,轻松实现文件下载与文件浏览服务

安心使用AndServer,轻松实现文件下载与文件浏览服务 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 实现文件下载与文件浏览服务,助力开发者高效搭建服务器。 项目介绍 在移动开发领域,搭建一个高效稳定的文件服务系统对于开发者来说至关重要。今天要为大家推荐的这个开源项目——AndServer实现文件下载+文件浏览服务,就是基于AndServer框架的一个示...

gitblog_06735的博客 1104

泛微E9开发 明细表字段赋值到主表字段,将各类型合计赋值到主表类型合计中

①绑定明细表类型、预计金额字段的值改变事件,每当有值发生改变,就需要重新计算供应商1、供应商2、供应商3的合计,如果不绑定这两个字段的话,会出现计算不及时或计算错误的问题。②当有明细行被删除时,也需要重新计算供应商1、供应商2、供应商3的合计,比如删除了供应商1的明细行,如果不重新计算,那么供应商1的值还是被删之前的值,合计错误。将各类型合计赋值到主表类型合计中。

a_waste_only的博客 3836

MATLAB实战:从零推导合成孔径雷达(SAR)后向投影(BP)算法核心公式与代码实现

本文详细介绍了如何使用MATLAB从零推导合成孔径雷达(SAR)后向投影(BP)算法的核心公式与代码实现。通过基础概念讲解、数学原理推导、距离维脉冲压缩实现及完整MATLAB代码展示,帮助读者掌握SAR成像的关键技术。特别针对BP算法的优化技巧和常见问题提供了实用解决方案,适合雷达信号处理领域的开发者和研究者参考。

weixin_28683689的博客 251

AndServer文件上传与下载:Multipart请求的完整解决方案

AndServer是Android平台上的Web服务器和Web框架,它提供了强大的Multipart请求处理能力,让开发者能够轻松实现文件上传与下载功能。本文将详细介绍如何使用AndServer处理Multipart请求,实现高效、稳定的文件传输功能。 ## 一、Multipart请求基础 Multipart请求是一种支持在单个请求中传输多个数据部分的HTTP请求格式,非常适合文件上传场景。A

gitblog_02038的博客 728

ESP32-C5 Wi-Fi CSI感知技术原理与工程实践

Wi-Fi信道状态信息(CSI)是OFDM系统中反映多径信道特性的复数频域响应,源于导频子载波的信道估计过程,本质属于物理层原始观测数据。其高维度(如56子载波)、高时间分辨率(百赫兹级采样)及零硬件增益的特性,使其成为无感人体感知的理想信号源。相比UWB或毫米波雷达,CSI方案依托现有Wi-Fi基础设施,兼具成本优势与部署灵活性,广泛应用于呼吸监测、跌倒检测、手势识别等边缘智能场景。乐鑫ESP32-C5通过5.8GHz低噪接收、亚纳秒级多天线同步与固件级CSI增强,显著提升微动感知鲁棒性,结合AGC锁定、

weixin_42153793的博客 343

AndServer实现文件下载+文件浏览服务

AndServer实现文件下载+文件浏览服务 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一个基于AndServer框架实现的文件下载与文件浏览服务的示例项目。本项目可以帮助开发者快速搭建一个能够进行文件上传、下载以及在线浏览的服务器。 功能特点 文件下载服务:支持文件列表展示,用户可选择文件进行下载。 文件浏览服务:支持在线查看文件内容,如文本文件、图片等。 ...

gitblog_06700的博客 468

某盾blackBox逆向——纯算

某盾blackBox逆向——纯算

Lzyydsb的博客 5892

OpenCV自学记录(1)——(一拳超人)图像处理基础(图像获取、图像变化)

学习深度学习进行图像分类和目标检测时,要有一定的图像处理的基础。在学习深度学习之前,看了一本《图像处理技术基础》,现在也忘得差不多了,后悔当初没有整理记录下来。现在整理一下图像处理的常用方法,最后实现一个小项目——基于OpenCV的车牌号识别。 OpenCV自学记录(1)——图像处理基础(一)1、图像获取1.1获取图像数据1.2 获取摄像头图像数据2、图像变化2.1 移动(translation)...

qq_40784418的博客 1455

在 Android 设备上搭建 Web 服务器--AndServer,不用注解的方式

一般而言,Android 应用在请求数据时都是以 Get 或 Post 等方式向远程服务器发起请求,那你有没有想过其实我们也可以在 Android 设备上搭建一个小型 Web 服务器,并且实现常规的下载图片、下载文件、提交表单等功能呢? 下面要介绍的就是如何在 Android 设备上搭建一个 Web 服务器,这个 Web 服务器的功能有如下几点: 接受客户端文件上传、下载文件 动态 Http ...

zhangmiaoping23的专栏 1971

智能制造之物料详解

制造业业务系统中的物料流转贯穿需求、采购、生产到交付全流程,各系统协同实现精准追踪。需求阶段由CRM/ERP/PLM生成物料计划;采购入库阶段SCM/WMS/QMS完成采购质检;生产阶段MES/APS协调领料加工;成品交付阶段WMS/SCM处理出库物流。整个流程以BOM为蓝图,ERP为调度中心,通过数据联动实现物料状态、位置和数量的全链路可追溯。

cdfunlove的博客 655

AndServer入门教程:5分钟学会在Android应用中部署Web服务器

AndServer是一款专为Android平台设计的Web服务器和Web框架,能够让开发者在Android应用中快速部署功能完善的HTTP服务器。通过简单的配置,你可以将Android设备转变为本地Web服务节点,实现数据交互、资源共享等功能。 ## 🚀 为什么选择AndServer? AndServer作为Android平台轻量级Web服务器解决方案,具有以下核心优势: - **零依赖部署

gitblog_02359的博客 959

YOLOv11改进 | 主干/Backbone篇 | 轻量化目标检测网络MobileViTv1改进yolov11有效涨点

本文给大家带来的改进机制是MobileViT系列的V1版本,其作为MobileNet网络的挑战者,其效果自然不用多说,MobileViT模型是为移动设备设计的轻量级、通用目的视觉变换器。它融合了卷积神经网络(CNN)和视觉变换器(ViT)的优势,旨在在保持高效性能的同时减少模型参数和降低延迟。通过其创新的MobileViT Block和多尺度训练方法,MobileViT在多个视觉任务上取得了优异的结果,欢迎大家订阅本专栏,本专栏每周更新3-5篇最新机制,更有包含我所有改进的文件和交流群提供给大家。

Snu77的博客 2336

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Android】【AndServer】AndServer2.1实现文件下载服务+文件浏览服务

【代码】【Android】【AndServer】AndServer2.1实现文件下载服务+文件浏览服务。

天天向上 Up Up Up (*^▽^*) 1899

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【亲测免费】 AndServer安装与配置完全指南

**AndServer** 是一个专为Android平台设计的Web服务器与Web框架。这个项目利用类似于SpringMVC的注解方式,使得开发者能够以一种熟悉且高效的方法构建Android上的网络服务。项目采用**Java**作为主要编程语言,确保在Android环境中的广泛兼容性和性能。 ## 关键技术和框架 AndServer的核心特点在于其采用**编译时注解**来实现请求处理逻辑,这与...

gitblog_07771的博客 1103

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

AndServer 项目推荐

AndServer 是一个运行在 Android 平台上的 Web 服务器和 Web 框架。它基于编译时注解,提供了类似 SpringMVC 的注解和功能,使得开发者可以快速上手。AndServer 主要使用 Java 语言编写,适合 Android 开发者使用。 ## 2. 项目核心功能 AndServer 的核心功能包括: - **Web 服务器部署**:支持在 Android 设备上部...

gitblog_07772的博客 428

AndServer,一个Android端的web服务器AndServer手机服务器

【代码】AndServer,一个Android端的web服务器AndServer手机服务器。

chengzhenjia的博客 701
上一篇: AndroidStudio中Project下的build.gradle没有buildscript和allprojects了
下一篇: 安卓AS 中报错java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
YSoup
博客等级 码龄10年 110粉丝 104原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值