[owncloud-devel] Unable to upload files in chunks on ownCloud server using C#
rahuljain840 at gmail.com
Sun Jun 7 09:22:40 GMT 2015
I am trying to upload file in chunks on ownCloud on-premise server using
ASP.NET C#. I have tried all my ways to upload file in chunks but each time
my chunk data is overwrite on previous chunk data.
I am unable to append my chunk on previously uploaded chunk. I am using
plUpload to send files in chunk. And i have created an handler which is
called each time a chunk is uploaded here is the code that runs to upload
the chunk. I know i am missing some headers to inculde in code which must
be required to submit data in chunks.
Below is my code to submit data on ownCloud server.
Source code used:
public void Upload(Stream chunkStream, String remoteFilePath, object state)
Uri uploadUri = getServerUrl(remoteFilePath, false);
string method = WebRequestMethods.Http.Put.ToString();
var content = ReadFully(chunkStream);
AsyncCallback callback = new AsyncCallback(FinishUpload);
// Need to send along headers?
IDictionary<string, string> headers = new Dictionary<string,
HTTPRequest(uploadUri, method, headers, content, localFilePath,
callback, state, true);
void HTTPRequest(Uri uri, string requestMethod, IDictionary<string, string>
headers, byte content, string uploadFilePath, AsyncCallback callback,
object state, bool sendChunks)
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
* The following line fixes an authentication problem explained
System.Net.ServicePointManager.Expect100Continue = false;
// The server may use authentication
if (user != null && pass != null)
if (domain != null)
networkCredential = new NetworkCredential(user, pass,
networkCredential = new NetworkCredential(user, pass);
httpWebRequest.Credentials = networkCredential;
// Send authentication along with first request.
httpWebRequest.PreAuthenticate = true;
httpWebRequest.Method = requestMethod;
// httpWebRequest.SendChunked = true;
if (headers != null)
foreach (string key in headers.Keys)
httpWebRequest.SendChunked = true;
// Need to send along content?
if (content != null || uploadFilePath != null)
RequestState asyncState = new RequestState();
asyncState.request = httpWebRequest;
asyncState.userCallback = callback;
asyncState.userState = state;
if (content != null)
// The request either contains actual content...
httpWebRequest.ContentLength = content.Length;
asyncState.content = content;
httpWebRequest.ContentType = "text/xml";
// ...or a reference to the file to be added as content.
httpWebRequest.ContentLength = new
asyncState.uploadFilePath = uploadFilePath;
// Retrieve the request stream.
Stream putRequestStream1 =
// Write the string to the destination as text bytes.
putRequestStream1.Write(content, 0, content.Length);
// Close the request stream.
// Retrieve the response.
HttpWebResponse httpPutResponse1 =
Kindly suggest where am i doing wrong.
Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Devel