Get file to upload and copy into a temporal file (Uploads#uploadFiles
authormasensio <masensio@solidgear.es>
Tue, 28 Apr 2015 12:22:35 +0000 (14:22 +0200)
committermasensio <masensio@solidgear.es>
Tue, 28 Apr 2015 12:22:35 +0000 (14:22 +0200)
src/com/owncloud/android/ui/activity/Uploader.java

index 9dc0fbf..60b6ae5 100644 (file)
 package com.owncloud.android.ui.activity;
 
 import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -45,6 +51,7 @@ import android.content.res.Resources.NotFoundException;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
 import android.os.Parcelable;
 import android.preference.PreferenceManager;
 import android.provider.MediaStore.Audio;
@@ -73,6 +80,8 @@ import com.owncloud.android.operations.CreateFolderOperation;
 import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.ErrorMessageAdapter;
+import com.owncloud.android.utils.FileStorageUtils;
+import com.owncloud.android.utils.UriUtils;
 
 
 /**
@@ -428,7 +437,7 @@ public class Uploader extends FileActivity
             for (Parcelable mStream : mStreamsToUpload) {
                 
                 Uri uri = (Uri) mStream;
-                if (uri !=null) {
+                if (uri != null) {
                     if (uri.getScheme().equals("content")) {
                         
                        String mimeType = getContentResolver().getType(uri);
@@ -436,16 +445,64 @@ public class Uploader extends FileActivity
                        if (mimeType.contains("image")) {
                            String[] CONTENT_PROJECTION = { Images.Media.DATA,
                                    Images.Media.DISPLAY_NAME, Images.Media.MIME_TYPE,
-                                   Images.Media.SIZE};
+                                   Images.Media.SIZE };
                            Cursor c = getContentResolver().query(uri, CONTENT_PROJECTION, null,
                                    null, null);
                            c.moveToFirst();
                            int index = c.getColumnIndex(Images.Media.DATA);
                            String data = c.getString(index);
+                           String filePath = mUploadPath +
+                                   c.getString(c.getColumnIndex(Images.Media.DISPLAY_NAME));
+                           String fullTempPath = FileStorageUtils.getTemporalPath(getAccount().name)
+                                   + filePath;
+                           InputStream inputStream = null;
+                           FileOutputStream outputStream = null;
+                           if (data == null) {
+                             try {
+                                 inputStream = getContentResolver().openInputStream(uri);
+                                 File cacheFile = new File(fullTempPath);
+                                 cacheFile.createNewFile();
+                                 outputStream = new FileOutputStream(fullTempPath);
+                                 byte[]  buffer = new byte[4096];
+
+                                 int count = 0;
+
+                                 while ((count = inputStream.read(buffer)) > 0) {
+                                     outputStream.write(buffer, 0, count);
+                                 }
+
+                                 outputStream.close();
+                                 inputStream.close();
+
+                                 data = fullTempPath;
+                             }catch (Exception e) {
+                                 if (inputStream != null) {
+                                     try {
+                                         inputStream.close();
+                                     } catch (Exception e1) {
+
+                                     }
+                                 }
+
+                                 if (outputStream != null) {
+                                     try {
+                                         outputStream.close();
+                                     } catch (Exception e1) {
+
+                                     }
+                                 }
+
+                                 if (fullTempPath != null) {
+                                     File    f = new File(fullTempPath);
+                                     f.delete();
+                                 }
+                             }
+                           }
+
                            local.add(data);
                            remote.add(mUploadPath +
                                    c.getString(c.getColumnIndex(Images.Media.DISPLAY_NAME)));
-                       
+
                        }
                        else if (mimeType.contains("video")) {
                            String[] CONTENT_PROJECTION = { Video.Media.DATA,