浏览代码

fix fileupload from external apps

Bartek Przybylski 13 年之前
父节点
当前提交
70c46d8fdc
共有 2 个文件被更改,包括 10 次插入4 次删除
  1. 7 3
      src/eu/alefzero/owncloud/Uploader.java
  2. 3 1
      src/eu/alefzero/owncloud/files/services/FileUploader.java

+ 7 - 3
src/eu/alefzero/owncloud/Uploader.java

@@ -18,6 +18,7 @@
 package eu.alefzero.owncloud;
 
 import java.io.File;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Stack;
 
@@ -264,7 +265,10 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
             }
             Log.d(TAG, "Uploading file to dir " + pathToUpload);
 
-            mUploadPath = pathToUpload;
+            mUploadPath = "";
+            for (String s : pathToUpload.split("/"))
+                mUploadPath = "/" + URLEncoder.encode(s);
+            if (!mUploadPath.endsWith("/")) mUploadPath += "/";
             mCreateDir = false;
             uploadFiles();
 
@@ -382,11 +386,11 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
                 final String display_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),
                              data = c.getString(c.getColumnIndex(Media.DATA));
                 local[i] = data;
-                remote[i] = mUploadPath + "/" + display_name;
+                remote[i] = mUploadPath + display_name;
             } else if (uri.getScheme().equals("file")) {
                 final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme() + "://", ""));
                 local[i] = file.getAbsolutePath();
-                remote[i] = mUploadPath + "/" + file.getName();
+                remote[i] = mUploadPath + file.getName();
             }
 
         }

+ 3 - 1
src/eu/alefzero/owncloud/files/services/FileUploader.java

@@ -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);
             }
         }