zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    牛客网每日一练
    牛客网每日一练
    牛客网每日一练
    linux解压命令 迎客
    japid 研究 迎客
    Linux 下载工具 wget 迎客
    Nginx 安装 迎客
    Redmine 迎客
    安装 Redis 迎客
    http状态码一览表 迎客
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309498.html
Copyright © 2011-2022 走看看