在我的应用程序中,我希望将上传图像从手机上传到服务器并使用Retrofit2
。
对于这项工作,我从互联网上找到了一些来源,但在一个来源中使用它:
public interface RetrofitInterface {
@Multipart
@POST("/images/upload")
Call<Response> uploadImage(@Part MultipartBody.Part image);
}
以及以下其他来源:
public interface ApiConfig {
@Multipart
@POST("images/upload_image.php")
Call<ServerResponse> upload(
@PartMap Map<String, RequestBody> map);
}
在第一个来源中使用@Part MultipartBody.Part image
,在第二个来源中使用@PartMap Map<String, RequestBody> map
。
两者之间有什么区别?
我使用哪一个更好?
答案 0 :(得分:2)
两者之间有什么区别?
@Part is used during this scenario
,
当您有多部分请求并且您事先知道需要发送到服务器的文件时,您使用@part注释声明它。
@PartMap is used during this scenario
,
当您不知道必须以相同密钥发送到服务器的部分时,我们使用@PartMap annoation
现在回答你的问题我更好地使用哪一个?
如果您有一组必须上传的图像,请使用@Part方法,否则请使用@PartMap。
答案 1 :(得分:1)
您可以查看改装2文档,了解零件和零件之间的差异。 PartMap:
Differences between Part & PartMap for uploading files
改造文档: 如果您只需要将一个或两个描述与文件一起传递,则可以在服务中将其声明为@Part。 这适用于小用例,但如果你需要发送多个属性,它会变得非常混乱,特别是如果并非所有属性都被设置的话。
Retrofit提供了一个简单的解决方案,使上传可以自定义:@PartMap。 @PartMap是请求参数的附加注释,它允许我们指定在运行时期间发送的部分数量和部分。如果您的表单很长,但实际上只发送了一些输入字段值,这非常有用。