第一種 @Part
@POST("/upload.php")
@Multipart
public Observable<ResultInfo> upload(@Part MultipartBody.Part file);
這種方式函數(shù)必須指定@MultiPart注解,函數(shù)參數(shù)類型為MultipartBody.Part類型,@Part注解不需要指定字段名稱喜滨。
第二種 @Part("file")
@POST("/upload.php")
@Multipart
public Observable<ResultInfo> upload(@Part("file") RequestBody file);
這種方式同樣要求函數(shù)必須指定@Multipart注解,函數(shù)參數(shù)使用@Part("file")注解,通過@Part注解指定字段名稱练湿,但是函數(shù)參數(shù)類型不可以是MultipartBody.Part類型。通過PHP服務(wù)器接收的時(shí)候需要通過$_POST['file']來接收审轮,而不是$_FILES['file']來接收肥哎,這是因?yàn)镽etrofit在解析@Part注解時(shí)指定的頭沒有filename屬性辽俗。
第三種 @Body
@POST("/upload.php")
public Observable<ResultInfo> upload(@Body RequestBody file);
這種方式函數(shù)不可以使用@Multipart注解和@FormUrlEncoded注解,并且@Body注解只能使用一次篡诽,函數(shù)的參數(shù)類型沒有要求崖飘,只要可以通過Convert轉(zhuǎn)換成RequestBody就行,不過上傳文件一般用直接用RequestBody杈女。如果使用MultipartBody類型作為參數(shù)朱浴,一定要設(shè)置type為MultipartBody.FORM。