1.接口
上传图片
https://www.liulongbin.top:xxxx/api/private/v1/upload
post
请求头 authorization
参数: file – 文件
2.Okhttp 文件上传
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
//1.获取文件的路径
String path = Environment.getExternalStorageDirectory()+ File.separator+"7-1.png";
//path --> File
File file = new File(path);
if (!file.exists()){
Log.d(TAG, "uploadOkhttp: 文件不在啊");
return;
}
//file--->requestBody
RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);
//混合体对象 requestBody -- > multipartBody
MultipartBody build1 = new MultipartBody.Builder()
//表单类型
.setType(MultipartBody.FORM)
.addFormDataPart("file",file.getName(),requestBody)
.build();
OkHttpClient okHttpClient = new OkHttpClient();
Request build = new Request.Builder()
.url(uploadUrl)
.header("authorization",head)
.post(build1)
.build();
okHttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d(TAG, "onFailure: "+e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d(TAG, "onResponse: "+response.body().string());
}
});
Retrofit 文件上传
网络请求的接口:
String baseUrl =" https://www.liulongbin.top:xxx/";
/**
* 上传图片
post
请求头 authorization
参数: file -- 文件
* @return
*/
@Multipart
@POST("api/private/v1/upload")
Call<ResponseBody> uploadFile(@Header("authorization") String auth, @Part MultipartBody.Part filePart);
//path
String path = Environment.getExternalStorageDirectory()+"/7-1.png";
//path--->File
File file = new File(path);
//file--->requestBody
RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);
//requestbody ---> multipartBody.Part
MultipartBody.Part multipartBodyPart = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
new Retrofit.Builder()
.baseUrl(ApiService.baseUrl)
.build()
.create(ApiService.class)
.uploadFile(head,multipartBodyPart)
.enqueue(new retrofit2.Callback<ResponseBody>() {
@Override
public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
try {
Log.d(TAG, "onResponse: "+response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) {
Log.d(TAG, "onFailure: "+t.getMessage());
}
});