X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/a1c538db20f10549b6665ae52582b850feb72e62..8361540852ec87b51c85937e0f326a83e19cd8ad:/src/com/owncloud/android/operations/UploadFileOperation.java diff --git a/src/com/owncloud/android/operations/UploadFileOperation.java b/src/com/owncloud/android/operations/UploadFileOperation.java index 6f3cd9cf..9c570ea0 100644 --- a/src/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/com/owncloud/android/operations/UploadFileOperation.java @@ -143,7 +143,6 @@ public class UploadFileOperation extends RemoteOperation { mDataTransferListeners.add(listener); } - @Override protected RemoteOperationResult run(WebdavClient client) { RemoteOperationResult result = null; @@ -167,8 +166,7 @@ public class UploadFileOperation extends RemoteOperation { /// check location of local file; if not the expected, copy to a temporal file before upload (if COPY is the expected behaviour) if (!originalStoragePath.equals(expectedPath) && mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_COPY) { - File ocLocalFolder = new File(FileStorageUtils.getSavePath(mAccount.name)); - if (ocLocalFolder.getUsableSpace() < originalFile.length()) { + if (FileStorageUtils.getUsableSpace(mAccount.name) < originalFile.length()) { result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_FULL); return result; // error condition when the file should be copied @@ -177,15 +175,33 @@ public class UploadFileOperation extends RemoteOperation { mFile.setStoragePath(temporalPath); temporalFile = new File(temporalPath); if (!originalStoragePath.equals(temporalPath)) { // preventing weird but possible situation - InputStream in = new FileInputStream(originalFile); - OutputStream out = new FileOutputStream(temporalFile); - byte[] buf = new byte[1024]; - int len; - while ((len = in.read(buf)) > 0){ - out.write(buf, 0, len); + InputStream in = null; + OutputStream out = null; + try { + in = new FileInputStream(originalFile); + out = new FileOutputStream(temporalFile); + byte[] buf = new byte[1024]; + int len; + while ((len = in.read(buf)) > 0){ + out.write(buf, 0, len); + } + + } catch (Exception e) { + result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_NOT_COPIED); + return result; + + } finally { + try { + if (in != null) in.close(); + } catch (Exception e) { + Log.d(TAG, "Weird exception while closing input stream for " + originalStoragePath + " (ignoring)", e); + } + try { + if (out != null) out.close(); + } catch (Exception e) { + Log.d(TAG, "Weird exception while closing output stream for " + expectedPath + " (ignoring)", e); + } } - in.close(); - out.close(); } } } @@ -217,8 +233,11 @@ public class UploadFileOperation extends RemoteOperation { } expectedFile = new File(mFile.getStoragePath()); if (!expectedFile.equals(fileToMove) && !fileToMove.renameTo(expectedFile)) { - result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_NOT_MOVED); - return result; + mFile.setStoragePath(null); // forget the local file + // by now, treat this as a success; the file was uploaded; the user won't like that the local file is not linked, but this should be a veeery rare fail; + // the best option could be show a warning message (but not a fail) + //result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_NOT_MOVED); + //return result; } } }