构建一个MultipartBody,将需要上传的文件通过这个对象传递给服务器,有两个方法可使用:
addFormDataPart(String name,String filename,RequestBody body):
name为对应该文件的表单元素的名称,即类似<input type=“file”name=“myFile”>的myfile。
filename为要上传的文件名。
body为封装了要上传的文件数据的RequestBody,通过RequestBody的静态方法create(okhttp3.MediaType contentType,File file)来构建一个RequestBody对象,其中MediaType为一个枚举对象,这里一般使用Multipart.FORM。
addFormDataPart(String name,String value):其他普通的表单元素。
案例:
(1)新建一个module,命名为OkHttpFileDemo。
(2)在项目build.gradle文件中的dependencies闭包下进行添加对OkHttp的依赖。
部分代码如下:
(3)在项目build.gradle文件中的Android下添加指定jdk版本的代码以解决Android studio 导入依赖构建时报错(Error:Static interface methods are only supported starting with Android N(--min-api 24))。
部分代码如下:
(4)在AndroidManifest.xml中添加权限(注意需要增加外部存储读写权限)。
部分代码如下:
(5)用户可自行架设一个Tomcat服务器,需注意的是jdk版本和Tomcat版本的匹配问题,Tomcat6不支持jdk1.8版本,建议安装Tomcat7或更高版本,否则加载jsp页面会报错:An error occurred at line:1 in the generated java file。本案例使用的是apache-tomcat-8.0.38,见图6.4。(www.xing528.com)
图6.4
(6)从网上下载commons-fileupload-1.3.1.jar和commons-io-2.4.jar并把它们复制到Tomcat的lib库文件夹用于支持jsp的文件上传,见图6.5。
图6.5
(7)编写login2.html文件,该文件用于测试upload.jsp文件的功能是否正常。
(8)编写upload.jsp文件,该文件用于完成文件上传功能。
(9)把login2.html和upload.jsp放到Tomcat的webapps\ROOT文件夹下,见图6.6。
图6.6
(10)启动Tomcat测试一下文件上传功能,见图6.7。如果Tomcat启动控制台出现中文乱码,需要更改Tomcat根目录下“conf”子目录下的“logging.properties”文件中所有的“encoding = UTF-8”配置项,将其改为“encoding = GBK”。
图6.7
测试成功后再进行Android代码的测试。
(11)布局文件activity_main.xml。
(12)MainActivity.java。
(13)运行效果,见图6.8。
图6.8
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。