无法通过okhttp3上传文件

deb*_*low -2 java android file-upload okhttp okhttp3

我得到了关于活动结果的文件。或者我应该说它的内容 uri 版本。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode==RESULT_OK && requestCode==0){
        Log.d("uri data",""+data.getData());
        selectedFileUri = data.getData();
Run Code Online (Sandbox Code Playgroud)

我的问题是如何通过 okhttp3 方法发送这个文件?

okhttp 3 方法如下

multipart.addFilePart("data[User][user_picture]", selectedFileUri);
Run Code Online (Sandbox Code Playgroud)

感谢您的时间。

Anu*_*ngh 6

OkHttpClient client = new OkHttpClient();

RequestBody requestBody = new MultipartBody.Builder()
    .setType(MultipartBody.FORM)
    .addFormDataPart("image", "your file name.png",
        RequestBody.create(MEDIA_TYPE_PNG, new File("your absolute file path")))
    .build();

Request request = new Request.Builder()
    .url("Your url")
    .post(requestBody)
    .build();

//Check the response
try (Response response = client.newCall(request).execute()) {
  if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

  System.out.println(response.body().string());
}
Run Code Online (Sandbox Code Playgroud)

通过此博客了解URI 如何从 Uri 消费内容

或者

从 mediastore 的 URI 获取文件名和路径