private void startUpload() { File upFolder = new File(getCacheDir(), getString(R.string.upload_folder_path)); File fileToUpload = upFolder.listFiles()[0]; String remotePath = FileUtils.PATH_SEPARATOR + fileToUpload.getName(); String mimeType = getString(R.string.sample_file_mimetype); // Get the last modification date of the file from the file system Long timeStampLong = fileToUpload.lastModified()/1000; String timeStamp = timeStampLong.toString(); UploadRemoteFileOperation uploadOperation = new UploadRemoteFileOperation(fileToUpload.getAbsolutePath(), remotePath, mimeType, timeStamp); uploadOperation.addDatatransferProgressListener(this); uploadOperation.execute(mClient, this, mHandler); }
protected RemoteOperationResult<? extends Object> uploadFile(OwnCloudClient client) throws Exception { File fileToUpload = new File(mLocalPath); MediaType mediaType = MediaType.parse(mMimeType); mFileRequestBody = new FileRequestBody(fileToUpload, mediaType); synchronized (mDataTransferListeners) { mFileRequestBody.addDatatransferProgressListeners(mDataTransferListeners); } if (mRequiredEtag != null && mRequiredEtag.length() > 0) { mPutMethod.addRequestHeader(HttpConstants.IF_MATCH_HEADER, mRequiredEtag); } mPutMethod.addRequestHeader(HttpConstants.OC_TOTAL_LENGTH_HEADER, String.valueOf(fileToUpload.length())); mPutMethod.addRequestHeader(HttpConstants.OC_X_OC_MTIME_HEADER, mFileLastModifTimestamp); mPutMethod.setRequestBody(mFileRequestBody); int status = client.executeHttpMethod(mPutMethod); if (isSuccess(status)) { return new RemoteOperationResult<>(OK); } else { // synchronization failed return new RemoteOperationResult<>(mPutMethod); } }
@Override protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result; try { mPutMethod = new PutMethod( new URL(client.getUserFilesWebDavUri() + WebdavUtils.encodePath(mRemotePath))); mPutMethod.setRetryOnConnectionFailure(false); if (mCancellationRequested.get()) { // the operation was cancelled before getting it's turn to be executed in the queue of uploads result = new RemoteOperationResult<>(new OperationCancelledException()); } else { // perform the upload result = uploadFile(client); Log_OC.i(TAG, "Upload of " + mLocalPath + " to " + mRemotePath + ": " + result.getLogMessage()); } } catch (Exception e) { if (mPutMethod != null && mPutMethod.isAborted()) { result = new RemoteOperationResult<>(new OperationCancelledException()); Log_OC.e(TAG, "Upload of " + mLocalPath + " to " + mRemotePath + ": " + result.getLogMessage(), new OperationCancelledException()); } else { result = new RemoteOperationResult<>(e); Log_OC.e(TAG, "Upload of " + mLocalPath + " to " + mRemotePath + ": " + result.getLogMessage(), e); } } return result; }