OkHttp3文件上传接口
项目中用到需要将文件上传到另一项目B
上,项目B
提供了一个文件上传的接口。就用到了在后台接口中发送post
请求来将文件传过去。可以使用okhttp3
的方式,非常简单。
1、加依赖
首先项目加如下依赖:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.3.1</version>
</dependency>
2、方法如下
/**
*
* @param url 远程项目上传接口地址
* @param uploadDir 文件保存类型路径,用于不同模块下分文件夹管理
* @param baseFileUrl 本地文件保存基路径
* @param relativeUrl 本地文件保存相对路径
* @return 调用远程项目上传接口的返回结果
*/
public String uploadFilePost(String url,String uploadDir,String baseFileUrl,String relativeUrl){
File temporaryFile = new File(baseFileUrl+relativeUrl);
if(!temporaryFile.exists()){
return "";
}
RequestBody requestBody = new MultipartBody.Builder()
.addFormDataPart("uploadDir", uploadDir) //参数一
.addFormDataPart("fileUrl", relativeUrl) //参数二
.addFormDataPart("file", temporaryFile.getName(), /RequestBody.create(MediaType.parse("application/octet-stream"),temporaryFile)) //参数三,是一个文件
.build();
Request requestOk = new Request.Builder()
.url(url)
.post(requestBody)
.build(); //post请求含请求参数
Response response;
try {
response = new OkHttpClient().newCall(requestOk).execute();
String jsonString = response.body().string();
// temporaryFile.delete();
if(response.isSuccessful()){
return jsonString;
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
okhttp3
发送文件就这样,挺简洁的。