OKHttp3学习之八:带参数文件上传

需求:上传手机SD卡上的文件至网络服务器端,要求同时附带Form表单参数和文件参数

在app模块的build.gradle配置

compile 'com.squareup.okhttp3:okhttp:3.4.2'

实现源码

public void uploadFile(View view) {
    OkHttpClient client = new OkHttpClient();
    String uploadUrl = SERVER_ADDRESS + "/upload";
    String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "generated.apk";
    File file = new File(filePath);

    RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);

    RequestBody requestBody = new MultipartBody.Builder()
            .setType(MultipartBody.FORM)
            .addFormDataPart("username", "appblog.cn")  //Form表单参数
            .addFormDataPart("file", "appblog.apk", fileBody)  //文件参数
            .build();

    Request request = new Request.Builder().url(uploadUrl).post(requestBody).build();
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            Log.i(TAG, "请求失败: " + e.getLocalizedMessage());
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()) {
                Log.i(TAG, "请求成功");
            }
        }
    });
}
上一篇 OKHttp3学习之七:文件下载(拦截器方式)
下一篇 OKHttp3学习之九:文件上传(拦截器获取上传进度)
目录
文章列表
1 Python安装Robot Framework错误UnicodeDecodeError解决
Python安装Robot Framework错误UnicodeDecodeError解决
2
Android测试(3):Android单元测试
Android测试(3):Android单元测试
3
Lucene的学习第三篇 — 分词
Lucene的学习第三篇 — 分词
4
Android基础之LinearLayout
Android基础之LinearLayout
5
设计模式(16)访问者模式
设计模式(16)访问者模式
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。