Android之Okhttp上传下载文件

OkHttp异步上传文件:

1.确定上传文件的类型:

public static final MediaType MEDIA_TYPE_MARKDOWN=MediaType.parse(“text/x-markdown;charset=utf-8”);

2.获取文件的路径

2.1首先要添加sd卡的读写权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2.2判断当前设备是否挂载了SD卡

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
			|| !Environment.isExternalStorageRemovable()) {
        //有SD卡
		
	} else {
		//没有SD卡
	}

2.3获取路径的接口

String path= Environment.getExternalStorageDirectory().getAbsolutePath();

2.4如果是模拟器则可以在这个路径下放入文档

3.构造文件

3.1File file=new File(path,"xx.txt");
3.2作为参数传入post中

post(RequestBody.create(MEDIA_TYPE_MARKDOWN,file));

3.3如何监听上传的进度呢?待解答!






Okhttp异步文件下载

1.InputStream is=response.body().byteStream();//获取输入流
2.确定文件下载到设备的地址

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	//挂载了sd卡
	filepath=Environment.getExternalStorageDirectory().getAbsolutePath();
}else{
	filepath=getFilesDir().getAbsolutePath();
}
File file=new File(filepath,"文件名");

3.将输入流通过FileOutputStream输入到该file文件中

FileOutputStream fos=new FileOutputStream(file);
byte[] buffer=new byte[2048];//缓冲区
int length=0;
while((length=is.read(buffer))!=-1){
	//如果没读完,继续将数据读入buffer中
	fos.write(buffer,0,len);
	//将buffer中的内容写到file中

}

4.异步上传Multipart文件

RequestBody reqeustBody=new MultipartBody.Builder().setType(Multipart.FROM)
.addFormDataPart("key","value").RequestBody.create(MediaType.prase("image/png"),new File(path))).build();
发布了123 篇原创文章 · 获赞 74 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43927892/article/details/102336467