简单使用Okgo上传下载文件
okgo概念性的东西我就不赘述了,百度一大堆,直接上具体的使用过程。
首先引入依赖:
implementation 'com.lzy.net:okgo:+'
我不知道这个版本号,所以直接用+来获取最新版本了。
引入依赖后需要在Application中初始化:
OkGo.getInstance().init(this);
摒弃所有花里胡哨的操作,要在application的oncreate()方法中初始化okgo就可以了。
因为上一篇已经开启了本地服务器了,所以这里就直接使用本地服务器的地址了。使用NanoHttpd在Android项目中搭建服务器,需要在项目中搭建服务器的可以去了解一下哈,虽然写得有点水。
上传功能:
String serverIP = getIpAddress();//获取本机ip地址
String strDBPath = MyApplication.GetApp().getExternalFilesDir(null) + "/TIS-Smarthome/" + choose + "/" + (choose + ".db3");//数据库地址final String strDBPath2 = MyApplication.GetApp().getExternalFilesDir(null) + "/TIS-Smarthome/" + "upload/";//文件上传的路径String urlNano = "http://" + serverIP + ":8080"; //8080nanohttpd的端口号File file = new File(strDBPath);//实例化数据库文件List<File> fileList = new ArrayList<File>();//添加到arraylist里面fileList.add(file);//把文件添加到Filelist中// }
// File fileTest = new File("/sdcard/xda.txt");//post上传文件OkGo.<File>post(/*url*/urlNano)
// .tag(DatabaseSelectUpload.class)
// .headers("header1", "headerValue1")
// .params("db3",file)
// .isMultipart(true)
// .params("securityCode",pblvariables.security_code)/*验证码*/
// .params("Remark",choose)/*数据库名称*/
// .upFile(file/*fileTest*/) /*使用up开头的方法 所有的params设置的参数将丢失 所以两种方法不能混用 */.addFileParams("fileOfdatabase",fileList).execute(new FileCallback(strDBPath2,choose+".db3") {//指定上传的路径 上传的文件名@Overridepublic void onSuccess(Response<File> response) {//UI线程 ,请求成功后回调handleResponse(response);// 该方法能够显示成功时的请求状态,请求头,响应数据以及响应头信息File result = response.body(); // 获取数据Log.i("randomcode","上传成功1 " + result);Toast.makeText(DatabaseSelectUpload.this,"Success!",Toast.LENGTH_SHORT).show();}@Overridepublic void onError(Response<File> response) {super.onError(response);//UI线程 ,请求失败后回调Log.i("randomcode","上传失败1 " + response.body());Toast.makeText(DatabaseSelectUpload.this,"Fail!",Toast.LENGTH_SHORT).show();}@Overridepublic void onFinish() {super.onFinish();//UI线程 ,请求结束后回调,无论网络请求还是失败都会调用finish();//结束当前页面}});
我上面传入的serverip地址是设备的ip,也就是说访问的是局域网内的服务器。获取方法百度一堆,懒的找的直接复制下面这个方法:
/*** @Title: getIpAddress** @Description: 获取设备ip地址** @return String*/public static String getIpAddress() {try {for (Enumeration<NetworkInterface> enNetI = NetworkInterface.getNetworkInterfaces(); enNetI.hasMoreElements();) {NetworkInterface netI = enNetI.nextElement();for (Enumeration<InetAddress> enumIpAddr = netI.getInetAddresses(); enumIpAddr.hasMoreElements();) {InetAddress inetAddress = enumIpAddr.nextElement();if (inetAddress instanceof Inet4Address &&!inetAddress.isLoopbackAddress()) {return inetAddress.getHostAddress();}}}} catch (SocketException e) {e.printStackTrace();}return "";}
下载功能:
private void downLoadDatabase() {final String choose = DatabaseSelectUpload.name_.get(0);//这里给个写死的名称 真实的自己获取或者设置String serverIP = getIpAddress();String url = "http://" + serverIP + ":8080";String strDBPath3 = MyApplication.GetApp().getExternalFilesDir(null) + "/TIS- Smarthome/"+"download";//下载路径OkGo.<File>get(url)/*.tag(this).headers("header1", "headerValue1").params("db3", String.valueOf(new File(strDBPath))).params("securityCode",pblvariables.security_code)*//*验证码*//*.params("Remark",choose)*//*数据库名称*/.execute(new FileCallback(strDBPath3,choose/*+"_1"*/+".db3") { //指定下载的路径 下载文件名@Overridepublic void onSuccess(Response<File> response) {Toast.makeText(TransferActivity.this,"dowmload database success",Toast.LENGTH_SHORT).show();Log.i("randomcode","下载成功1 " + response.body());}@Overridepublic void onError(Response<File> response) {super.onError(response);Toast.makeText(TransferActivity.this,"dowmload database fail",Toast.LENGTH_SHORT).show();Log.i("randomcode","下载失败1 " + response.body());}});
}
这样就完事了,url就是你的服务器地址。可指定上传下载的路径和文件名称。运行程序,成功的话会在对应目录下找到上传下载的文件。
简单使用Okgo上传下载文件相关推荐
- python上传本地文件到ftp_python实现的简单FTP上传下载文件实例
本文实例讲述了python实现的简单FTP上传下载文件的方法.分享给大家供大家参考.具体如下: python本身自带一个FTP模块,可以实现上传下载的函数功能. #!/usr/bin/env pyth ...
- 在Windows上使用终端模拟程序连接操作Linux以及上传下载文件
在Windows上使用终端模拟程序连接操作Linux以及上传下载文件 [很简单,就是一个工具的使用而已,放这里是做个笔记.] 刚买的云主机,或者是虚拟机里安装的Linux系统,可能会涉及到在windo ...
- JavaWeb:上传下载文件
1. 文件上传概述 1.1 文件上传的作用 例如网络硬盘!就是用来上传下载文件的. 在智联招聘上填写一个完整的简历还需要上传照片呢. 1.2 文件上传对页面的要求 上传文件的要求比较多,需要记一下: ...
- java 上传文件及预览_SpringBoot上传下载文件及在线预览
SpringBoot上传下载文件及在线预览 今天大概就说说如何使用SpringBoot进行上传和下载以及在线预览文件 本篇主要介绍上传下载的功能,对于界面就简单一点,大致如下: 一.老规矩还是先看看小 ...
- linux ftp 登录慢,linux中vsftpd登录,上传下载文件慢解决办法linux操作系统 -电脑资料...
vsftpd登录慢主要是nameserver #定义DNS服务器的IP地址没有设置了,这样我们只要设置或更新一下nameserver即可解决了, 在使用vsftpd的过程中,一直以来都有一个问题就是在 ...
- go ssh 执行多个命令_Gox语言中通过SSH远程执行命令及上传下载文件-GX10
Gox语言作为一个"粘合剂"语言,当然需要有便捷的网络编程能力和远程服务器操作的能力,没有让人失望的是,这确实也正是它所擅长的. 再次说明,Gox语言的安装很简单,只需要去官网下载 ...
- springboot上传下载文件(4)--上传下载工具类(已封装)
因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...
- Linux| 向linux服务器上传下载文件方式收集(scp)
scp [优点]简单方便,安全可靠:支持限速参数 [缺点]不支持排除目录 [用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式, ...
- secure CRT上传下载文件
SecureCRT这款SSH客户端软件同时具备了终端仿真器和文件传输功能.比ftp命令方便多了,而且服务器不用再开FTP服务了.rz,sz是便是Linux/Unix同Windows进行ZModem文件 ...
最新文章
- MOS管好坏的判别方法
- MIT 6.828 JOS学习笔记12 Exercise 1.9
- 当你在应用机器学习时你应该想什么
- 现在就是.Net最好的时代!我赞成,谁反对?
- leetcode 383. 赎金信 思考分析
- 【信号与系统|吴大正】2:连续系统的时域分析
- 0matlab计算锚泊系统,一种基于蒙特卡洛仿真的计算锚地容量的方法与流程
- 请求头显示Provisional headers are shown问题
- Ps 初学者教程「68」如何创建海报?
- 用python写脚本控制电脑息屏唤醒_Python制作小脚本,一键可以让你同事的电脑在你指定时间关机...
- 计算机桌面移动如何解决,【电脑小知识】桌面布局被锁定,图标不能随意移动了怎么办?...
- PAT甲级 1032 Sharing
- 通过Git Hook关联Tapd和Commit
- 亲生骨肉 窥视父母遗产 为了继承遗产竟用这种方式替代...
- 进制之间快速转换技巧
- 程序员面试100题之六 最长公共子序列
- golang zip压缩/解压缩用法
- 深入讨论DECLARE_HANDLE(HINSTANCE)
- YOLOv6又快又准的目标检测框架 已开源
- 华为Push用户增长服务:精准触达,加速增长