多部分体为空

时间:2018-06-20 09:57:56

标签: android retrofit2 multipartform-data multipart okhttp3

在我的应用中,我按如下所示设置多部分主体。

File file = new File(selectedImageUri);
RequestBody requestBody = RequestBody.create(MediaType.parse("audio/mpeg"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("", file.getName(), requestBody);

上面的代码绝对可以正常工作

我正在对contentType进行如下检查

void uploadAudio(){
    File file = new File(selectedFileUri);
    MultipartBody.Part body = null;
     if (contentType == "audio") {
       RequestBody requestBody = RequestBody.create(MediaType.parse("audio/mpeg"), file);
       body = MultipartBody.Part.createFormData("", file.getName(), requestBody);
     }
}

在下面的行中,我将其分配为Multipart,它返回null。

body = MultipartBody.Part.createFormData("", file.getName(), requestBody);

关于我在做什么错的任何想法。任何帮助将不胜感激。 谢谢

2 个答案:

答案 0 :(得分:0)

尝试一下

 RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
            // MultipartBody.Part is used to send also the actual filename
            MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), requestFile);

答案 1 :(得分:0)

您可以使用这些功能来获取内容类型

 // url = file path or whatever suitable URL you want.
    public static String getMimeType(String url) {
       ContentResolver cR = context.getContentResolver();
       MimeTypeMap mime = MimeTypeMap.getSingleton();
       String type = mime.getExtensionFromMimeType(cR.getType(url));
       return type;
    }