UploadEngine.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package com.sk.weichat.helper;
  2. import android.text.TextUtils;
  3. import android.util.Log;
  4. import com.alibaba.fastjson.JSON;
  5. import com.loopj.android.http.AsyncHttpClient;
  6. import com.loopj.android.http.AsyncHttpResponseHandler;
  7. import com.loopj.android.http.RequestParams;
  8. import com.sk.weichat.MyApplication;
  9. import com.sk.weichat.bean.UploadFileResult;
  10. import com.sk.weichat.bean.message.ChatMessage;
  11. import com.sk.weichat.bean.message.XmppMessage;
  12. import com.sk.weichat.db.dao.ChatMessageDao;
  13. import com.sk.weichat.volley.Result;
  14. import org.apache.http.Header;
  15. import java.io.File;
  16. import java.io.FileNotFoundException;
  17. /**
  18. * 专门用来上传的
  19. *
  20. *
  21. */
  22. public class UploadEngine {
  23. public interface ImFileUploadResponse {
  24. void onSuccess(String toUserId, ChatMessage message);
  25. void onFailure(String toUserId, ChatMessage message);
  26. }
  27. public static final void uploadImFile(final String toUserId, final ChatMessage message, final ImFileUploadResponse response) {
  28. Log.d("roamer", "开始上传...");
  29. RequestParams params = new RequestParams();
  30. final String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
  31. params.put("userId", loginUserId);
  32. params.put("access_token", MyApplication.getInstance().mAccessToken);
  33. // params.put("uploadFlag","3");
  34. Log.d("roamer", "userId..."+loginUserId);
  35. Log.d("roamer", "access_token..."+MyApplication.getInstance().mAccessToken);
  36. try {
  37. params.put("file1", new File(message.getFilePath()));
  38. Log.d("roamer", "开始上传...类型"+message.getType()+"...."+message.getFilePath());
  39. } catch (FileNotFoundException e) {
  40. e.printStackTrace();
  41. }
  42. AsyncHttpClient client = new AsyncHttpClient();
  43. client.post(MyApplication.getInstance().getConfig().UPLOAD_URL, params, new AsyncHttpResponseHandler() {
  44. @Override
  45. public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
  46. String url = null;
  47. if (arg0 == 200) {
  48. UploadFileResult result = null;
  49. try {
  50. result = JSON.parseObject(new String(arg2), UploadFileResult.class);
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. }
  54. if (result == null || result.getResultCode() != Result.CODE_SUCCESS || result.getData() == null
  55. || result.getSuccess() != result.getTotal()) {
  56. } else {
  57. UploadFileResult.Data data = result.getData();
  58. if (message.getType() == XmppMessage.TYPE_IMAGE) {
  59. if (data.getImages() != null && data.getImages().size() > 0) {
  60. url = data.getImages().get(0).getOriginalUrl();
  61. }
  62. } else if (message.getType() == XmppMessage.TYPE_VOICE) {
  63. if (data.getAudios() != null && data.getAudios().size() > 0) {
  64. url = data.getAudios().get(0).getOriginalUrl();
  65. }
  66. } else if (message.getType() == XmppMessage.TYPE_VIDEO) {
  67. if (data.getVideos() != null && data.getVideos().size() > 0) {
  68. url = data.getVideos().get(0).getOriginalUrl();
  69. }
  70. } else if (message.getType() == XmppMessage.TYPE_FILE){
  71. if (data.getFiles() != null && data.getFiles().size() > 0) {
  72. url = data.getFiles().get(0).getOriginalUrl();
  73. }else if (data.getVideos() != null && data.getVideos().size() > 0) {
  74. url = data.getVideos().get(0).getOriginalUrl();
  75. }else if (data.getAudios() != null && data.getAudios().size() > 0) {
  76. url = data.getAudios().get(0).getOriginalUrl();
  77. }else if (data.getImages() != null && data.getImages().size() > 0) {
  78. url = data.getImages().get(0).getOriginalUrl();
  79. }else if(data.getOthers()!=null&&data.getOthers().size()>0){
  80. url=data.getOthers().get(0).getOriginalUrl();
  81. }else {
  82. }
  83. }
  84. }
  85. }
  86. Log.d("roamer", "file url:"+url);
  87. if (TextUtils.isEmpty(url)) {
  88. if (response != null) {
  89. response.onFailure(toUserId, message);
  90. ChatMessageDao.getInstance().updateMessageUploadState(loginUserId, toUserId, message.get_id(), false, url);
  91. Log.d("roamer", "url为空,让其响应为失败");
  92. }
  93. } else {
  94. ChatMessageDao.getInstance().updateMessageUploadState(loginUserId, toUserId, message.get_id(), true, url);
  95. if (response != null) {
  96. Log.d("roamer", "上传文件成功了");
  97. message.setContent(url);
  98. message.setUpload(true);
  99. response.onSuccess(toUserId, message);
  100. }
  101. }
  102. }
  103. @Override
  104. public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
  105. // 失败就不用更新数据库了,默认值就是false
  106. // ChatMessageDao.getInstance().updateMessageSendState(loginUserId,
  107. // toUserId, msg_id, false);
  108. Log.d("roamer", "上传失败了...");
  109. Log.d("roamer", arg3.toString());
  110. if (response != null) {
  111. response.onFailure(toUserId, message);
  112. }
  113. }
  114. });
  115. }
  116. }