首页 文章

使用 Retrofit2.0 上传图片时出错

提问于
浏览
1

我正在将一个图像文件上传到服务器,该服务器会成功抛出错误 response(200)。

我得到的错误消息是:文件类型无效!只允许以下文件类型:bmp,csv,doc,docx,eps,flv,gif,jpeg,jpg,mkv,mov,mp3,mp4,mpeg,mpg,ogg,pdf,png,psd,rar,swf,txt ,wav,wma,wmv,xls,xlsx,zip

这是我的代码片段:

Uri imageUri = Uri.fromFile(new File(fileName));

Map<String, RequestBody> map = new HashMap<>();
if (imageUri != null) {
    File file = new File(imageUri.getPath());
    RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
    map.put("file\"; filename=\"" + file.getName(), fileBody);
}

Call<UploadResponse> call = FotomateClient.getFotomateAPI().upload(authorization, map);
call.enqueue(new Callback<UploadResponse>() {
    @Override
    public void onResponse(Response<UploadResponse> response) {
        if (response != null)
            if (response.body() != null)
                if (response.body().getCode() != null)
                    System.out.println(response.body().getCode());
        pd.dismiss();
        if (response.body().isSuccess()) {
            postCart("Bearer " + fm.getAccessToken(), response.body().getCode(), qty);
            dbHelper.deleteImage(id);

        }
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
});
}

我在这一点上受到了打击。谁能帮我吗。提前致谢。

1 回答

  • 0

    代替

    RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
    map.put("file\"; filename=\"" + file.getName(), fileBody);
    

    试试这个代码

    RequestBody fileBody = RequestBody.create(MediaType.parse("image/png"), file);
    map.put("files\"; filename=\"image.png\"", fileBody);
    

    界面应如下所示:

    @Multipart
    @POST("mysite/upload")
    Call<JsonElement> upload(@PartMap Map<String, RequestBody> params);
    

    注意:此代码在改造时工作和测试 2.0.0-beta3

相关问题