diff --git a/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java index d5dd096f..4e5d2318 100644 --- a/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java @@ -32,6 +32,7 @@ import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.util.Random; +import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.methods.PutMethod; import com.owncloud.android.lib.common.OwnCloudClient; @@ -49,6 +50,7 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation public static final long CHUNK_SIZE = 1024000; private static final String OC_CHUNKED_HEADER = "OC-Chunked"; private static final String OC_CHUNK_SIZE_HEADER = "OC-Chunk-Size"; + private static final String OC_CHUNK_X_OC_MTIME_HEADER = "X-OC-Mtime"; private static final String TAG = ChunkedUploadRemoteFileOperation.class.getSimpleName(); public ChunkedUploadRemoteFileOperation(String storagePath, String remotePath, String mimeType){ @@ -99,6 +101,12 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation mPutMethod.addRequestHeader(OC_CHUNKED_HEADER, OC_CHUNKED_HEADER); mPutMethod.addRequestHeader(OC_CHUNK_SIZE_HEADER, chunkSizeStr); mPutMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, totalLengthStr); + + // Tell to the server what is the last modification date of the file to upload + Long timeStampLong = System.currentTimeMillis()/1000; + String timeStamp = timeStampLong.toString(); + mPutMethod.addRequestHeader(OC_CHUNK_X_OC_MTIME_HEADER, timeStamp); + ((ChunkFromFileChannelRequestEntity) mEntity).setOffset(offset); mPutMethod.setRequestEntity(mEntity); if (mCancellationRequested.get()) { @@ -115,6 +123,9 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation status = client.executeMethod(mPutMethod); + // DELETE NEXT LINE + Header[] headers = mPutMethod.getResponseHeaders(); + if (status == 400) { InvalidCharacterExceptionParser xmlParser = new InvalidCharacterExceptionParser();