fix fileupload from external apps
authorBartek Przybylski <bart.p.pl@gmail.com>
Sun, 27 May 2012 17:56:06 +0000 (19:56 +0200)
committerBartek Przybylski <bart.p.pl@gmail.com>
Sun, 27 May 2012 17:56:06 +0000 (19:56 +0200)
src/eu/alefzero/owncloud/Uploader.java
src/eu/alefzero/owncloud/files/services/FileUploader.java

index a5d2316..13b2269 100644 (file)
@@ -18,6 +18,7 @@
 package eu.alefzero.owncloud;\r
 \r
 import java.io.File;\r
+import java.net.URLEncoder;\r
 import java.util.ArrayList;\r
 import java.util.Stack;\r
 \r
@@ -264,7 +265,10 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
             }\r
             Log.d(TAG, "Uploading file to dir " + pathToUpload);\r
 \r
-            mUploadPath = pathToUpload;\r
+            mUploadPath = "";\r
+            for (String s : pathToUpload.split("/"))\r
+                mUploadPath = "/" + URLEncoder.encode(s);\r
+            if (!mUploadPath.endsWith("/")) mUploadPath += "/";\r
             mCreateDir = false;\r
             uploadFiles();\r
 \r
@@ -382,11 +386,11 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
                 final String display_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),\r
                              data = c.getString(c.getColumnIndex(Media.DATA));\r
                 local[i] = data;\r
-                remote[i] = mUploadPath + "/" + display_name;\r
+                remote[i] = mUploadPath + display_name;\r
             } else if (uri.getScheme().equals("file")) {\r
                 final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme() + "://", ""));\r
                 local[i] = file.getAbsolutePath();\r
-                remote[i] = mUploadPath + "/" + file.getName();\r
+                remote[i] = mUploadPath + file.getName();\r
             }\r
 \r
         }\r
index c1c4d2a..d34034d 100644 (file)
@@ -1,6 +1,7 @@
 package eu.alefzero.owncloud.files.services;
 
 import java.io.File;
+import java.net.URLDecoder;
 
 import eu.alefzero.owncloud.AccountUtils;
 import eu.alefzero.owncloud.R;
@@ -177,7 +178,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
                 new_file.setModificationTimestamp(System.currentTimeMillis());
                 new_file.setLastSyncDate(0);
                 new_file.setStoragePath(mLocalPaths[i]);
-                new_file.setParentId(storageManager.getFileByPath(mRemotePaths[i].substring(0, mRemotePaths[i].lastIndexOf('/')+1)).getFileId());
+                File f = new File(mRemotePaths[i]);
+                new_file.setParentId(storageManager.getFileByPath(URLDecoder.decode(f.getParent().endsWith("/")?f.getParent():f.getParent()+"/")).getFileId());
                 storageManager.saveFile(new_file);
             }
         }