使用Retrofit上传压缩图像到服务器

8

我在项目中使用了retrofit。现在我需要使用retrofit将一张图片上传到服务器。所以我需要以下问题的帮助:

如何使用表单数据在retrofit中上传压缩后的位图到服务器?任何链接或示例都会有帮助。

1个回答

8

上传过程可以按照以下步骤操作

第一步:创建下面代码的方法

UploadPhotoRetroService service = ServiceGenerator.createService(MyActivity.class, "base-url");
TypedFile typedFile = new TypedFile("image/jpeg", new File(imagePath));
service.upload(typedFile, new Callback<String>() {
    @Override
    public void success(String result, Response response) {
        // success call back    
    }
    @Override
    public void failure(RetrofitError error) {
        error.printStackTrace();
    }
});

步骤2:创建以下界面。
public interface UploadPhotoRetroService {
    @Multipart
    @POST("/whatever-your-api")
    void upload(@Part("Photo") TypedFile file, Callback<String> callback);
}

步骤三:按以下方式创建类
public class ServiceGenerator {

    private ServiceGenerator() {
    }

    public static <S> S createService(Class<S> serviceClass, String baseUrl) {
        RestAdapter.Builder builder = new RestAdapter.Builder()
                .setEndpoint(baseUrl)
                .setClient(new OkClient(new OkHttpClient()));

        RestAdapter adapter = builder.build();

        return adapter.create(serviceClass);
    }
}

在Retrofit中,TypedFile已不再可用。您知道如何在没有TypedFile的情况下完成它吗? - Habeeb Ahmed
奇怪!!我在我的应用程序中使用TypedFile和Retrofit版本1.9.0上传照片,一切正常。 - Shankar Prasad
对于 Retrofit 2.0,您将创建一个 ResponseBody,而不是使用 TypedFile。可以使用 ResponseBody.create 方法来创建 ResponseBody。 - Jawnnypoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接