UploadEngine.java 5.2 KB

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