Bip*_*ari 7 android multipartform-data multipart retrofit retrofit2
我必须以这种格式发送一个帖子请求.
--__X_PAW_BOUNDARY__
Content-Disposition: form-data; name="user_photo[image]"; filename="file.jpg"
Content-Type: image/jpeg
ÿØÿàJFIFHHÿáLExifMM*i
ÿí8Photoshop 3.08BIM8BIM%ÔÙ²é ìøB~ÿÀ
"ÿÄ
ÿĵ}!1AQa"q2¡#B±ÁRÑð$3br
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
ÿĵw!1AQaq"2B¡±Á #3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÛC ÿÛC ÿÝZÿÚ?ü_¢+þæð¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¯ë3þ
Run Code Online (Sandbox Code Playgroud)
我基本上试图在邮件请求中发送一张照片,其名称user_photo[image]如下图所示:
以下是我考虑过的解决方案的片段:
Call<models.UploadResponse> uploadPhoto(@Path("id") int userId, @Part MultipartBody.Part file);
MultipartBody.Part body = MultipartBody.Part.createFormData("user_photo[image]", file.getName(), requestFile);
Call<models.UploadResponse> call = userRequest.uploadPhoto(62, body);
RequestBody requestFile =
RequestBody.create(MediaType.parse("image/*"), FileUtils.getFile(PhotoUploadActivity.this, fileUri));
Call<models.UploadResponse> call = userRequest.uploadPhoto(62, requestFile);
Call<models.UploadResponse> uploadPhoto(@Path("id") int userId, @Part ("name=\"user_photo[image]\"") RequestBody file);
@Multipart
@POST("users/{id}/user_photos")
Call<models.UploadResponse> uploadPhoto(@Path("id") int userId, @Part("name=\"user_photo[image]\"") RequestBody file);
Run Code Online (Sandbox Code Playgroud)
这是okhttp日志:
D/OkHttp: Content-Type: multipart/form-data; boundary=75e8ae2e-a160-413f-82d1-3afd94f22c43
D/OkHttp: Content-Length: 43706
D/OkHttp: ??????JFIF?????????????????Photoshop 3.0??8BIM??????????hg??vdP4uk_QnzZ02cW1f845(??JFBMD0f00078d0300006c1d0000675000009d53000068590000c77e000041a90000b1a90000??ICC_PROFILE??????lcms????mntrRGB XYZ ?????????)??9acspAPPL?????????????????????????????????????????????????????????????????-lcms??????????????????????????????????????????????????????????????????????????????????????????????
D/OkHttp: desc?????????????^cprt????\??????wtpt????h??????bkpt????|??????rXYZ???????????gXYZ???????????bXYZ???????????rTRC???????????@gTRC???????????@bTRC???????????@desc??????????????c2????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????text????????FB????XYZ ?????????????????????????-XYZ ????????????????3?????XYZ ????????????o?????8??????XYZ ????????????b????????????XYZ ????????????$????????????curv??????????????????????c?k??Q4!?)?2;?FQw]?kpz???|?i?}???0??????C??
D/OkHttp:
D/OkHttp:
D/OkHttp: ?"?????????????????????????????????????????????????????????????????????????<r9??????J???????@??aCLk@?|2?=?VW?}??????E???? ?,i?v!?Q;j?H?N@E0!??1?J?T5L4???????? ??h???U??S????6v???2??]
D/OkHttp: ????3??T0??-@t?`&h????????%????????[w(?????f^
D/OkHttp: C???;???t??????E??I?O?[?Hv? -?g?t?k???y????????6S7zEe??/??I_??b??;?Gr??/?:B??R-7$eO??M??G??I??G2?r?s7#p?P??Ha?o6U?$?3(?????G\?q?4???Dj?S???????n?V???J?f?m{{???q?<\??_L???v+?1??-?\h???\u?Pnms????9 ??".~N?z?*J>f?I?:$??T j?C?{???$?_$3y????y?¼žj???j???s?z?)?o???J????]????????s]???
D/OkHttp: ??)??(?u??????Ll_T???S??"(??_o?{n?3???}OU?P`}C^zl?]?V"}??u?Un|=????-?mn?e?1?g???S???Q0?ggF??????B?;?>????P???5c?x"?#o?9??s`?j2????O?Y??a??-???zy???d???
D/OkHttp: E?r?jqL?ah?^?u??'?+?Z????N:{a?'N??1???H?M?t ?H???i???û???hP
D/OkHttp: ???0???
D/OkHttp: ?????Y#M?qg???+?????T?????????4?@??CA@??????????&????G????wL???<Vo?l?Q??????H_?a?I??T??z??H???Z????S?b)???d???L11?3??????hL ?????h????b? ????
D/OkHttp: <Rf"??L??(?
D/OkHttp: s??3?Pg???`g?????>&|J?S%???]?b?m?q#??k??
Run Code Online (Sandbox Code Playgroud)
也:
我提到的解决方案:
我厌倦了寻找解决方案.有人可以帮忙吗?
@Multipart
@POST("users/{id}/user_photos")
Call<SignUpResp> uploadPhoto(@Part("description") RequestBody description, @Part MultipartBody.Part file,(add if more parameter req as like ID,name));
Run Code Online (Sandbox Code Playgroud)
if (fileUpload != null) {
/**
* code for multipart
*/
// create RequestBody instance from file
RequestBody requestFile =
RequestBody.create(MediaType.parse("multipart/form-data"), fileUpload);
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part body =
MultipartBody.Part.createFormData("user_photo[image]", fileUpload.getName(), requestFile);
// add another part within the multipart request
String descriptionString = "hello, this is description speaking";
RequestBody description =
RequestBody.create(
MediaType.parse("multipart/form-data"), descriptionString);
call = userRequest.uploadPhoto(description, body, authData);
}
Run Code Online (Sandbox Code Playgroud)
您必须将其作为键入的文件发送。
TypedFile upload_file = new TypedFile("multipart/form-data", new File(your_file_location));
@Multipart
@POST("users/{id}/user_photos")
Call<models.UploadResponse> uploadPhoto(@Path("id") int userId, @Part("name=\"user_photo[image]\"")TypedFile upload_file);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
5066 次 |
| 最近记录: |