Android:无法使用Retrofit 2.0.0 beta 2上传多部分图片文件

Navratan Soni

嗨,我无法使用改造版2.0.0-beta2上传图像。它给我“图像丢失”错误。尽管我检查了系统中是否存在该文件,并且是否在“图像”视图中显示了该文件,但它仍可以正确显示。

需要上传的URL: http : //mywebsite.com/signature/upload/

所以我的BASE_URL是= http://mywebsite.com/

我的.gradle文件具有以下内容:

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
compile 'com.squareup.okhttp:logging-interceptor:2.6.0'

SeriveGenerator.java类是

public class ServiceGenerator {

public static final String API_BASE_URL = Urls.URL_BASE;

private static OkHttpClient httpClient = new OkHttpClient();



private static Retrofit.Builder builder =
        new Retrofit.Builder()
                .baseUrl(API_BASE_URL)
                .addConverterFactory(GsonConverterFactory.create());

public static <S> S createService(Class<S> serviceClass) {
    Retrofit retrofit = builder.client(httpClient).build();
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    httpClient.interceptors().add(interceptor);
    return retrofit.create(serviceClass);
}

}

UploadService.java类为

public interface UploadService {
@Multipart
@POST("/signature/upload/")  
// Tried to change this to "/signature/upload" as well (no slash in end)
// then gives Method not allowed error"
Call<String> upload(
        @Part("image") RequestBody file,
        @Part("image_name") String name);
}

最后在我的android活动中

// photoFile is the file, checked that it exist in system and 
// path is also correct

public void uploadFileToServer() {
    UploadService service =
            ServiceGenerator.createService(UploadService.class);

    String name = "xyz.jpg";

    RequestBody requestBody =
            RequestBody.create(MediaType.parse("multipart/form-data"), photoFile);

    Call<String> call = service.upload(requestBody, name);
    call.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Response<String> response, Retrofit retrofit) {

            Log.v("Upload", "success");
        }

        @Override
        public void onFailure(Throwable t) {
            Log.e("Upload", t.getMessage());
        }
    });
}

因此,我从活动中获取成功日志“成功”,但服务器文件不存在,使用邮递员,我尝试手动将图像上传到表单数据中,是否正确上传。

菲利普·赫尔迈尔

几天前,我遇到了类似的问题。这是我的工作代码。

首先,您必须定义接口。不添加内容类型标头非常重要。在下面的内容中,您将看到@Part("picture\";“图片”是后端期望的相应名称(在我的情况下)。因此,您必须更改此名称才能使其与您的后端一起使用。filename = \“ image \”仅定义您上传的图像的名称。就我而言,该方法位于“ DiaryService.java”中。

    @Multipart
    @POST("signature/upload")
    public Call<Void> addImageElementToDiary(@Part("picture\"; filename=\"image\" ") RequestBody picture,
                                             @Part("sort") RequestBody sort);

现在,您可以调用上面定义的服务。正确解析Mediatype很重要。您使用了“ multipart / form-data”,这在我的情况下不起作用。您应该查看以下媒体类型。

    File file = new File(((CreateDiaryImage) element).getImagePath());

        RequestBody sort = RequestBody.create(MediaType.parse("text/plain"), element.getSort() + "");

        RequestBody requestBody =
                RequestBody.create(MediaType.parse("image/*"), file);

        Call<Void> call = diaryService.addImageElementToDiary(requestBody, sort);
        call.enqueue(new Callback<Void>() {
            @Override
            public void onResponse(Response<Void> response, Retrofit retrofit) {
                Log.v("Upload", "success");
            }

            @Override
            public void onFailure(Throwable t) {
                Log.e("Upload", t.getMessage());
            }
        });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遵循Angular2快速入门beta.0时无法加载boot.js

来自分类Dev

Retrofit 2 beta2无法进行分段上传

来自分类Dev

ASP.NET 5 MVC6 Angular 2(Beta 0)-重复承诺

来自分类Dev

在angular2 beta 0应用中生成<undefined> html标签

来自分类Dev

使用带有Retrofit2两个多部分和JSON键值对上传文件

来自分类Dev

使用WSO2 API管理器上传多部分表单数据文件?

来自分类Dev

Retrofit v2.0.0-beta2如何使用RequestBody上传文件

来自分类Dev

Android OpenGL ES2。0VBO无法渲染

来自分类Dev

0 < 2 = ...假?

来自分类Dev

Android - 获取数字的索引 #0 、 #1 、 #2

来自分类Dev

像以前的beta聚合模块一样打包和运行Angular2 RC.0

来自分类Dev

在R中将(0,1,0,0,1,1,1)转换为(0,0,0,1,0,1,2)

来自分类Dev

使用Scala收集方法可帮助将[0,0,0,1,1,1,1,0,0,1,1]的列表转换为[3,4,2,2]

来自分类Dev

为什么1/2 == 0使用double?

来自分类Dev

图片正在使用android中的php上传大小为0字节的文件

来自分类Dev

图片正在使用android中的php上传大小为0字节的文件

来自分类Dev

NetworkOnMainThreadException与Retrofit-beta2和rxjava

来自分类Dev

Retrofit(2.0 beta2)分段文件上传不起作用

来自分类Dev

如何创建从 (0,0,0) 到 (2,2,2) 的元组,条目最多为 2?

来自分类Dev

无法解析剩余部分:来自 'rates[0]' 的 '[0]' - 将 Flask 应用程序移植到 Django 2

来自分类Dev

HoltWinters 平滑参数 - alpha = 1 beta = 0 gamma = 0

来自分类Dev

为什么简单的2层神经网络无法学习0,0序列?

来自分类Dev

积分2不应返回0

来自分类Dev

在以 2 开头的行前添加 0

来自分类Dev

索引 = 2 不在 [0, 1)

来自分类Dev

如何定义一个列表,该列表的结果为序列[(0,0),(1,0),(2,0),(3,0)等]和[(0,0),(0,1 ),(0,2),(0,3)等]

来自分类Dev

Android多部分图片上传问题

来自分类Dev

使用两个指针的算法的时间复杂度是0(n)还是0(n ^ 2)

来自分类Dev

zookeeper无法打开localhost / 0:0:0:0:0:0:0:0:1:2181的套接字

Related 相关文章

  1. 1

    遵循Angular2快速入门beta.0时无法加载boot.js

  2. 2

    Retrofit 2 beta2无法进行分段上传

  3. 3

    ASP.NET 5 MVC6 Angular 2(Beta 0)-重复承诺

  4. 4

    在angular2 beta 0应用中生成<undefined> html标签

  5. 5

    使用带有Retrofit2两个多部分和JSON键值对上传文件

  6. 6

    使用WSO2 API管理器上传多部分表单数据文件?

  7. 7

    Retrofit v2.0.0-beta2如何使用RequestBody上传文件

  8. 8

    Android OpenGL ES2。0VBO无法渲染

  9. 9

    0 < 2 = ...假?

  10. 10

    Android - 获取数字的索引 #0 、 #1 、 #2

  11. 11

    像以前的beta聚合模块一样打包和运行Angular2 RC.0

  12. 12

    在R中将(0,1,0,0,1,1,1)转换为(0,0,0,1,0,1,2)

  13. 13

    使用Scala收集方法可帮助将[0,0,0,1,1,1,1,0,0,1,1]的列表转换为[3,4,2,2]

  14. 14

    为什么1/2 == 0使用double?

  15. 15

    图片正在使用android中的php上传大小为0字节的文件

  16. 16

    图片正在使用android中的php上传大小为0字节的文件

  17. 17

    NetworkOnMainThreadException与Retrofit-beta2和rxjava

  18. 18

    Retrofit(2.0 beta2)分段文件上传不起作用

  19. 19

    如何创建从 (0,0,0) 到 (2,2,2) 的元组,条目最多为 2?

  20. 20

    无法解析剩余部分:来自 'rates[0]' 的 '[0]' - 将 Flask 应用程序移植到 Django 2

  21. 21

    HoltWinters 平滑参数 - alpha = 1 beta = 0 gamma = 0

  22. 22

    为什么简单的2层神经网络无法学习0,0序列?

  23. 23

    积分2不应返回0

  24. 24

    在以 2 开头的行前添加 0

  25. 25

    索引 = 2 不在 [0, 1)

  26. 26

    如何定义一个列表,该列表的结果为序列[(0,0),(1,0),(2,0),(3,0)等]和[(0,0),(0,1 ),(0,2),(0,3)等]

  27. 27

    Android多部分图片上传问题

  28. 28

    使用两个指针的算法的时间复杂度是0(n)还是0(n ^ 2)

  29. 29

    zookeeper无法打开localhost / 0:0:0:0:0:0:0:0:1:2181的套接字

热门标签

归档