电脑端如何访问手机SD卡中的文件

简介: 基于AndServer所提供的功能,是不是我们就可以以自己的手机做为一个服务器,来部署一个网站呢?这个必须可以,AndServer中已经提供了部署的方式,部署完毕后,无非就是,电脑端访问服务器(也就是自己手机)里的各个文件

看到标题,估计各位看官有点懵,访问SD卡中的文件,你连上数据线不就行了,或者说你想要获取一些数据,你用及时通讯(微信,钉钉,QQ等等),在线传输不就行了,这些都可以的啊,有什么难的吗?哎,各位小老弟,还真有一种情况的出现,我们公司就是一个特例,每个人的电脑,都屏蔽了USB访问设备的权限,也就是说,你是硬盘,U盘,还是数据线,插上后,是没有权限查看文件的,想要从电脑往手机传输东西,或者说从手机往电脑传输东西,依靠的是及时通讯工具或者其它可用的工具。


针对这种情况的出现,不可能每个测试机里,我们都不断的登录一些及时通讯(微信,QQ等)的账号,况且这些传输文件,依赖性太强,也无法满足我们传输到某一个位置的需求,基于这种情况,看到了yanzhenjie开源的AndServer,这是一个基于Android系统的一个服务,可以实现网站的部署,还有动态api形式的访问,是非常强大的,大家可以点击直接看相关文档:https://yanzhenjie.com/AndServer/


基于AndServer所提供的功能,是不是我们就可以以自己的手机做为一个服务器,来部署一个网站呢?这个必须可以,AndServer中已经提供了部署的方式,部署完毕后,无非就是,电脑端访问服务器(也就是自己手机)里的各个文件,目前呢,基于AndServer开发的在线浏览文件及上传下载Demo已经开源,地址是:


https://github.com/AbnerMing888/SdFileManager,大家有需要的可以下载。


具体的效果如下图,电脑和手机必须连接同一网络,运行至手机之后,就可以打开服务,在电脑端输入对应的地址,就可以查看手机SD卡里的文件,也可以进行上传,或者删除。



PC端效果:



目前上传,是上传到你选择的路径下,同样的删除,也需要你在路径后,把文件的名字追加到路径后面。


Demo中重点的逻辑,有两个,一个是获取手机SD卡的各个文件路径,一个是上传和删除文件。


获取文件


/*** 返回文件列表*/@GetMapping(path="/list")
List<FileInfo>getFileList(@RequestParam(name="rootPath", required=false) StringrootPath) {
Filefile;
if (TextUtils.isEmpty(rootPath)) {
file=newFile(Environment.getExternalStorageDirectory().getAbsolutePath());
    } else {
file=newFile(rootPath);
    }
List<FileInfo>fileInfoList=newArrayList<>();
if (!file.isDirectory()) {
returnfileInfoList;
    }
File[] list=file.listFiles();
if (list==null||list.length==0) {
returnfileInfoList;
    }
FileInfofileInfo;
for (Filef : list) {
Stringname=f.getName();
fileInfo=newFileInfo();
fileInfo.setName(name);
fileInfo.setUrl(f.getAbsolutePath());
fileInfo.setDateModified(f.lastModified());
fileInfo.setDateModifiedString(TimeUtils.INSTANCE.formatDateToStr(f.lastModified(), "yyyy/MM/dd aHH:mm:ss"));
if (f.isFile()) {
fileInfo.setIsDir(0);
fileInfo.setSize(f.length());
fileInfo.setSizeString(FileUtils.formatFileSize(f.length()));
        } else {
fileInfo.setIsDir(1);
        }
fileInfoList.add(fileInfo);
    }
returnfileInfoList;
}


上传文件:


@PostMapping("/upload")
StringuploadFile(
@RequestParam(name="path") Stringpath,
@RequestParam(name="file") MultipartFilemultipartFile) {
Filedir=Environment.getExternalStorageDirectory();
if (!"-1".equals(path)) {
//证明为空dir=Environment.getExternalStoragePublicDirectory(path);
    }
try {
StringfileName=multipartFile.getFilename();
StringfilePath=dir+"/"+fileName;
InputStreaminputStream= (multipartFile.getStream());
FileOutputStreamfileWriter=newFileOutputStream(filePath);
byte[] bytes=newbyte[1024];
intlength;
while ((length=inputStream.read(bytes)) >0) {
fileWriter.write(bytes, 0, length);
fileWriter.flush();
        }
inputStream.close();
fileWriter.close();
    } catch (IOExceptione) {
e.printStackTrace();
returne.getMessage();
    }
returnmultipartFile.getFilename();
}


删除文件


@PostMapping("/deleteFile")
StringdeleteFile(
@RequestParam(name="path") Stringpath) {
Filefile=newFile(path);
if (file.exists()) {
file.delete();
    }
return"删除成功";
}


相关文章
|
1月前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
2月前
|
安全
手机kali终端,集成安全集成工具----使用arpspoof工具给电脑断网------断网,网络攻击手段
手机kali终端,集成安全集成工具----使用arpspoof工具给电脑断网------断网,网络攻击手段
|
2月前
|
Web App开发 移动开发 编解码
FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo
本文讨论了实时数据传输在互联网中的重要性,如即时通讯和在线直播。一对一通信通常使用WebRTC技术,但一对多直播需要流媒体服务器和特定协议,如RTSP、RTMP、SRT或RIST。RTMP由于其稳定性和早期普及,成为国内直播的主流。文章通过实例演示了如何使用OBS Studio和RTMP Streamer进行RTMP推流,并对比了不同流媒体传输协议的优缺点。推荐了两本关于FFmpeg和Android开发的书籍以供深入学习。
38 0
FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo
|
2月前
Discuz 手机版访问自动跳转到手机域名
Discuz 手机版访问自动跳转到手机域名
32 1
|
1月前
|
JavaScript
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
43 0
|
1月前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
2月前
|
JavaScript
技术心得:根据不同访问设备跳转到PC页面或手机页面
技术心得:根据不同访问设备跳转到PC页面或手机页面
18 0
|
2月前
discuz,如何去掉标题中的Powered by Discuz! 电脑端手机端整合
discuz,如何去掉标题中的Powered by Discuz! 电脑端手机端整合
24 0
|
2月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
1520 2
|
3月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
151 0