【发布时间】:2018-11-14 22:50:00
【问题描述】:
我正在开发一个 android 应用程序,我需要将多个图像从 android 应用程序上传到 php 服务器,目前我遇到了以下几个问题:
1) 我们可以将字段参数与图像一起作为多部分请求上传吗?如果可以,正确的请求格式应该是什么?
2 ) 下面是从 Android 上传多张图片的正确方法吗?
3 ) 顺利上传多张图片的正确策略应该是什么?
这是我的暂定代码,我认为它可以帮助任何人理解我想要实现的目标。
@Multipart
@FormUrlEncoded
@POST(AppConstants.BASE_URL+AppConstants.POST_AD)
Observable<Response<PostedAd>> postAd(@Header(AppConstants.HEADER_ACCESS_TOKEN) String headerToken,@Part("images[]") RequestBody files, @Field(AppConstants.FIELD_AD_TITLE) String adTitle, @Field(AppConstants.FIELD_AD_DESCRIPTION) String adDesc,@Field(AppConstants.FIELD_AD_ADDRESS) String adAddress,@Field(AppConstants.FIELD_AD_CITY) String city,@Field(AppConstants.FIELD_AD_STATE) String state,@Field(AppConstants.FIELD_AD_ZIPCODE) String zipcode,@Field(AppConstants.FIELD_AD_CONTACT_NUMBER) String contactNumber,@Field(AppConstants.FIELD_AD_TYPE) String adType,@Field(AppConstants.FIELD_AD_BUDGET_RATE) String adbudgetOrRate);
注意: REST API 的设计方式不允许我将所有字段作为单一正文参数发送。
【问题讨论】:
-
这不是一个专业的意见,但是,我在我的一些项目中遇到了这个......不得不在服务器端为图片和我的其余数据创建单独的请求。另外,通常我会为 body 创建一个 DataModel 类。另一种方法是在请求正文中使用
@Path("url_path")和 Multipart。 -
好的,我刚刚更新了关于 REST api 设计的问题,不幸的是我无法将正文作为参数发送。我知道这是糟糕的设计,但我对此无能为力。我会检查@Path 请求。
-
如果你对使用 okhtpp 没问题,你可以参考这个link
标签: android retrofit2 image-uploading multipartform-data url-encoding