projects
/
pub
/
Android
/
ownCloud.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
5b60e21
)
Added big file chunking for uplaods
author
David A. Velasco
<dvelasco@solidgear.es>
Mon, 24 Sep 2012 12:10:31 +0000
(14:10 +0200)
committer
David A. Velasco
<dvelasco@solidgear.es>
Mon, 24 Sep 2012 12:10:31 +0000
(14:10 +0200)
AndroidManifest.xml
patch
|
blob
|
blame
|
history
src/com/owncloud/android/files/services/FileUploader.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
patch
|
blob
|
blame
|
history
src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java
patch
|
blob
|
blame
|
history
diff --git
a/AndroidManifest.xml
b/AndroidManifest.xml
index
0ad3649
..
75a7b67
100644
(file)
--- a/
AndroidManifest.xml
+++ b/
AndroidManifest.xml
@@
-17,8
+17,8
@@
along with this program. If not, see <http://www.gnu.org/licenses/>.
\r
-->
\r
<manifest package="com.owncloud.android"
\r
along with this program. If not, see <http://www.gnu.org/licenses/>.
\r
-->
\r
<manifest package="com.owncloud.android"
\r
- android:versionCode="10301
0
"
\r
- android:versionName="1.3.1
0
" xmlns:android="http://schemas.android.com/apk/res/android">
\r
+ android:versionCode="10301
1
"
\r
+ android:versionName="1.3.1
1
" xmlns:android="http://schemas.android.com/apk/res/android">
\r
\r
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
\r
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
\r
\r
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
\r
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
\r
diff --git
a/src/com/owncloud/android/files/services/FileUploader.java
b/src/com/owncloud/android/files/services/FileUploader.java
index
6cf7a5c
..
1091691
100644
(file)
--- a/
src/com/owncloud/android/files/services/FileUploader.java
+++ b/
src/com/owncloud/android/files/services/FileUploader.java
@@
-103,8
+103,8
@@
public class FileUploader extends Service implements OnDatatransferProgressListe
* @return 'True' if the ownCloud server with version supports chunked uploads.
*/
private static boolean chunkedUploadIsSupported(OwnCloudVersion version) {
* @return 'True' if the ownCloud server with version supports chunked uploads.
*/
private static boolean chunkedUploadIsSupported(OwnCloudVersion version) {
-
//
return (version != null && version.compareTo(OwnCloudVersion.owncloud_v4_5) >= 0); // TODO uncomment when feature is full in server
- return false;
+ return (version != null && version.compareTo(OwnCloudVersion.owncloud_v4_5) >= 0); // TODO uncomment when feature is full in server
+
//
return false;
}
}
diff --git
a/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
b/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
index
0716a91
..
97d3eba
100644
(file)
--- a/
src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
+++ b/
src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
@@
-28,6
+28,8
@@
import java.util.Random;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PutMethod;
+import android.util.Log;
+
import eu.alefzero.webdav.ChunkFromFileChannelRequestEntity;
import eu.alefzero.webdav.OnDatatransferProgressListener;
import eu.alefzero.webdav.WebdavClient;
import eu.alefzero.webdav.ChunkFromFileChannelRequestEntity;
import eu.alefzero.webdav.OnDatatransferProgressListener;
import eu.alefzero.webdav.WebdavClient;
@@
-37,6
+39,7
@@
public class ChunkedUploadFileOperation extends UploadFileOperation {
private static final long CHUNK_SIZE = 102400;
private static final String OC_CHUNKED_HEADER = "OC-Chunked";
private static final long CHUNK_SIZE = 102400;
private static final String OC_CHUNKED_HEADER = "OC-Chunked";
+ private static final String TAG = ChunkedUploadFileOperation.class.getSimpleName();
public ChunkedUploadFileOperation( String localPath,
String remotePath,
public ChunkedUploadFileOperation( String localPath,
String remotePath,
@@
-62,15
+65,16
@@
public class ChunkedUploadFileOperation extends UploadFileOperation {
ChunkFromFileChannelRequestEntity entity = new ChunkFromFileChannelRequestEntity(channel, getMimeType(), CHUNK_SIZE);
entity.setOnDatatransferProgressListener(getDataTransferListener());
long offset = 0;
ChunkFromFileChannelRequestEntity entity = new ChunkFromFileChannelRequestEntity(channel, getMimeType(), CHUNK_SIZE);
entity.setOnDatatransferProgressListener(getDataTransferListener());
long offset = 0;
- String uriPrefix = client.getBaseUri() + WebdavUtils.encodePath(getRemotePath()) + "-chunking-" + Math.abs((new Random()).nextInt(
)
) + "-" ;
+ String uriPrefix = client.getBaseUri() + WebdavUtils.encodePath(getRemotePath()) + "-chunking-" + Math.abs((new Random()).nextInt(
9000)+1000
) + "-" ;
long chunkCount = (long) Math.ceil((double)file.length() / CHUNK_SIZE);
for (int chunkIndex = 0; chunkIndex < chunkCount ; chunkIndex++, offset += CHUNK_SIZE) {
long chunkCount = (long) Math.ceil((double)file.length() / CHUNK_SIZE);
for (int chunkIndex = 0; chunkIndex < chunkCount ; chunkIndex++, offset += CHUNK_SIZE) {
- put = new PutMethod(uriPrefix + chunk
Index + "-" + chunkCount
);
+ put = new PutMethod(uriPrefix + chunk
Count + "-" + chunkIndex
);
put.addRequestHeader(OC_CHUNKED_HEADER, OC_CHUNKED_HEADER);
entity.setOffset(offset);
put.setRequestEntity(entity);
status = client.executeMethod(put);
client.exhaustResponse(put.getResponseBodyAsStream());
put.addRequestHeader(OC_CHUNKED_HEADER, OC_CHUNKED_HEADER);
entity.setOffset(offset);
put.setRequestEntity(entity);
status = client.executeMethod(put);
client.exhaustResponse(put.getResponseBodyAsStream());
+ Log.d(TAG, "Upload of " + getLocalPath() + " to " + getRemotePath() + ", chunk index " + chunkIndex + ", count " + chunkCount + ", HTTP result status " + status);
if (!isSuccess(status))
break;
}
if (!isSuccess(status))
break;
}
diff --git
a/src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java
b/src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java
index
bcba354
..
c3c9a69
100644
(file)
--- a/
src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java
+++ b/
src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java
@@
-89,9
+89,8
@@
public class ChunkFromFileChannelRequestEntity implements RequestEntity {
int readCount = 0;
try {
int readCount = 0;
try {
- //while ((i = instream.read(tmp)) >= 0) {
mChannel.position(mOffset);
mChannel.position(mOffset);
- while (mChannel.position() < mOffset + mSize) {
+ while (mChannel.position() < mOffset + mSize
&& mChannel.position() < mChannel.size()
) {
readCount = mChannel.read(mBuffer);
out.write(mBuffer.array(), 0, readCount);
mBuffer.clear();
readCount = mChannel.read(mBuffer);
out.write(mBuffer.array(), 0, readCount);
mBuffer.clear();