Repositorio del curso CCOM4030 el semestre B91 del proyecto Artesanías con el Instituto de Cultura

CordovaHttpUpload.java 3.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.silkimen.cordovahttp;
  2. import android.content.ContentResolver;
  3. import android.content.Context;
  4. import android.database.Cursor;
  5. import android.net.Uri;
  6. import android.provider.OpenableColumns;
  7. import android.webkit.MimeTypeMap;
  8. import com.silkimen.http.HttpRequest;
  9. import com.silkimen.http.TLSConfiguration;
  10. import java.io.File;
  11. import java.io.InputStream;
  12. import java.net.URI;
  13. import javax.net.ssl.HostnameVerifier;
  14. import javax.net.ssl.SSLSocketFactory;
  15. import org.apache.cordova.CallbackContext;
  16. import org.json.JSONArray;
  17. import org.json.JSONObject;
  18. class CordovaHttpUpload extends CordovaHttpBase {
  19. private JSONArray filePaths;
  20. private JSONArray uploadNames;
  21. private Context applicationContext;
  22. public CordovaHttpUpload(String url, JSONObject headers, JSONArray filePaths, JSONArray uploadNames, int timeout,
  23. boolean followRedirects, String responseType, TLSConfiguration tlsConfiguration,
  24. Context applicationContext, CallbackContext callbackContext) {
  25. super("POST", url, headers, timeout, followRedirects, responseType, tlsConfiguration, callbackContext);
  26. this.filePaths = filePaths;
  27. this.uploadNames = uploadNames;
  28. this.applicationContext = applicationContext;
  29. }
  30. @Override
  31. protected void sendBody(HttpRequest request) throws Exception {
  32. for (int i = 0; i < this.filePaths.length(); ++i) {
  33. String uploadName = this.uploadNames.getString(i);
  34. String filePath = this.filePaths.getString(i);
  35. Uri fileUri = Uri.parse(filePath);
  36. // File Scheme
  37. if (ContentResolver.SCHEME_FILE.equals(fileUri.getScheme())) {
  38. File file = new File(new URI(filePath));
  39. String fileName = file.getName().trim();
  40. String mimeType = this.getMimeTypeFromFileName(fileName);
  41. request.part(uploadName, fileName, mimeType, file);
  42. }
  43. // Content Scheme
  44. if (ContentResolver.SCHEME_CONTENT.equals(fileUri.getScheme())) {
  45. InputStream inputStream = this.applicationContext.getContentResolver().openInputStream(fileUri);
  46. String fileName = this.getFileNameFromContentScheme(fileUri, this.applicationContext).trim();
  47. String mimeType = this.getMimeTypeFromFileName(fileName);
  48. request.part(uploadName, fileName, mimeType, inputStream);
  49. }
  50. }
  51. }
  52. private String getFileNameFromContentScheme(Uri contentSchemeUri, Context applicationContext) {
  53. Cursor returnCursor = applicationContext.getContentResolver().query(contentSchemeUri, null, null, null, null);
  54. if (returnCursor == null || !returnCursor.moveToFirst()) {
  55. return null;
  56. }
  57. int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
  58. String fileName = returnCursor.getString(nameIndex);
  59. returnCursor.close();
  60. return fileName;
  61. }
  62. private String getMimeTypeFromFileName(String fileName) {
  63. if (fileName == null || !fileName.contains(".")) {
  64. return null;
  65. }
  66. MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
  67. int extIndex = fileName.lastIndexOf('.') + 1;
  68. String extension = fileName.substring(extIndex).toLowerCase();
  69. return mimeTypeMap.getMimeTypeFromExtension(extension);
  70. }
  71. }