Retrofit2.0:上傳圖片到PHP
上傳圖片到PHP
關於Retrofit2.0+Rxjava,道長先只說一下上傳圖片到PHP,至於其他的可以先看一下CaBiao的部落格,這裡面關於Retrofit2.0+Rxjava的使用講的比較詳細。
新增介面:
/**
* 上傳圖片
* @return
*/
@Multipart
@POST(UrlContanier.ImgUpFile)
Observable<HttpResult<UploadPicResponse>> uploadPicData(@PartMap Map<String, RequestBody> reqMessageBody);
實現上傳方法:
道長這裡把每一個請求引數例項化為RequestBody,然後把例項化後的實體放到Map
public void uploadPicData(String picPath){
String fileKey = "files";
Map<String, RequestBody> clubUploadPicRequest = getBasePhpRequest();
RequestBody headpic = RequestBody.create(MediaType.parse("multipart/form-data"), new File(picPath));
fileKey += "\"; filename=\"" + new File(picPath).getName();
clubUploadPicRequest.put(fileKey, headpic);
RequestBody type = RequestBody.create(MediaType.parse("form-data"), "3");
clubUploadPicRequest.put("type" , type);
RequestBody liveid = RequestBody.create(MediaType.parse("form-data"), activeid);
clubUploadPicRequest.put("liveid" , liveid);
appAction.uploadPicData(new CallBack<UploadPicResponse>(ClubActivityDetailActivity.this) {
@Override
public void onCompleted() {
SimpleHUD.dismiss();
}
@Override
public void onError(Throwable e) {
super.onError(e);
SimpleHUD.dismiss();
}
@Override
public void onNext(UploadPicResponse uploadPicResponse) {
String json = JsonUtil.GsonString(uploadPicResponse);
LogHelper.v("lee", "uploadPicResponse:" + json);
}
}, clubUploadPicRequest);
}
public Map<String, RequestBody> getBasePhpRequest(){
Map<String, RequestBody> request = new HashMap<>();
RequestBody userid = RequestBody.create(MediaType.parse("form-data"), PreferenceHelper.get(ClubActivityDetailActivity.this, PreferenceHelper.PREFERENCE_LOGIN, "userid", 0) + "");
request.put("userid", userid);
RequestBody accessToken = RequestBody.create(MediaType.parse("form-data"),Config.ACCESSTOKEN);
request.put("accessToken",accessToken);
RequestBody clientVersion = RequestBody.create(MediaType.parse("form-data"),Config.CLIENTVERSION);
request.put("clientVersion",clientVersion);
RequestBody clientName = RequestBody.create(MediaType.parse("form-data"),Config.CLIENTNAME);
request.put("clientName",clientName);
RequestBody version = RequestBody.create(MediaType.parse("form-data"),Config.HTTP_VERSION);
request.put("version",version);
return request;
}
這裡要注意兩點:
1.封裝圖片的實體的程式碼為:
RequestBody headpic = RequestBody.create(MediaType.parse("multipart/form-data"), new File(picPath));
fileKey += "\"; filename=\"" + new File(picPath).getName();
clubUploadPicRequest.put(fileKey, headpic);
其中fileKey的拼接是不可改動的,如果改動的話會導致上傳不成功。
2.封裝其他請求引數的實體的程式碼為:
RequestBody userid = RequestBody.create(MediaType.parse("form-data"), PreferenceHelper.get(ClubActivityDetailActivity.this, PreferenceHelper.PREFERENCE_LOGIN, "userid", 0) + "");
request.put("userid", userid);
如果請求引數不是固定值,最好把引數設定為全域性變數,否則會例項化RequestBody不成功。希望這篇部落格能為你提供一些幫助。
相關文章
- PHP上傳圖片類PHP
- php圖片上傳之圖片轉換PHP
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava
- PHP配置CKEditor上傳圖片PHP
- thinkphp達到UploadFile.class.php圖片上傳功能PHP
- php+WebUploader圖片批量上傳PHPWeb
- PHP實現圖片(檔案)上傳PHP
- php圖片上傳之檔案安全PHP
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- Laravel 上傳圖片到七牛雲Laravel
- php5.5CURL圖片上傳廢棄@PHP
- Java和PHP兩種方式實現上傳圖片到新浪微博的圖床JavaPHP圖床
- 上傳圖片
- Flutter 上傳圖片到阿里雲OSSFlutter阿里
- vue 圖片上傳到阿里雲ossVue阿里
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- android選擇圖片或拍照圖片上傳到伺服器(包括上傳引數)Android伺服器
- PHP CURL 上傳二進位制流圖片PHP
- Ajax+PHP實現非同步圖片上傳PHP非同步
- PHP仿微信多圖片預覽上傳功能PHP
- php圖片上傳之分散式儲存FastDFSPHP分散式AST
- 【easyui 】上傳圖片UI
- 上傳圖片jsJS
- angular上傳圖片到.netcore後端AngularNetCore後端
- 圖片裁剪並上傳到阿里雲oss阿里
- 小程式上傳圖片到阿里雲oss阿里
- 小程式開發:上傳圖片到騰訊雲
- uniapp小程式上傳圖片到騰訊雲APP
- 圖片上傳及圖片處理
- php 非同步上傳圖片幾種方法總結PHP非同步
- Alfred Workflow 一鍵上傳圖片到 GitHub 返回 MarkdownAlfredGithub
- ueditor jsp版上傳圖片到阿里雲JS阿里
- 原生jq實現圖片上傳到伺服器伺服器
- 百度編輯器 ueditor 上傳圖片影片到阿里 Oss 或其他雲 PHP阿里PHP
- 多圖片formpost上傳ORM
- input file圖片上傳
- 圖片檔案上傳
- 測試圖片上傳