Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This code is pretty short and (hopefully) easy to understand:</p> <pre><code>public const int CHUNK_SIZE = 4096; public const string UPLOAD_URI = "http://localhost:55087/FileUpload.ashx?filename={0}&amp;append={1}"; private Stream _data; private string _fileName; private long _bytesTotal; private long _bytesUploaded; private void UploadFileChunk() { string uploadUri = ""; // Format the upload URI according to wether the it's the first chunk of the file if (_bytesUploaded == 0) { uploadUri = String.Format(UPLOAD_URI,_fileName,0); // Dont't append } else if (_bytesUploaded &lt; _bytesTotal) { uploadUri = String.Format(UPLOAD_URI, _fileName, 1); // append } else { return; // Upload finished } byte[] fileContent = new byte[CHUNK_SIZE]; _data.Read(fileContent, 0, CHUNK_SIZE); WebClient wc = new WebClient(); wc.OpenWriteCompleted += new OpenWriteCompletedEventHandler(wc_OpenWriteCompleted); Uri u = new Uri(uploadUri); wc.OpenWriteAsync(u, null, fileContent); _bytesUploaded += fileContent.Length; } void wc_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e) { if (e.Error == null) { object[] objArr = e.UserState as object[]; byte[] fileContent = objArr[0] as byte[]; int bytesRead = Convert.ToInt32(objArr[1]); Stream outputStream = e.Result; outputStream.Write(fileContent, 0, bytesRead); outputStream.Close(); if (_bytesUploaded &lt; _bytesTotal) { UploadFileChunk(); } else { // Upload complete } } } </code></pre> <p>For a complete downloadable solution see my blog post on this: <a href="http://gregdoesit.com/2009/10/file-upload-in-silverlight-a-simple-solution/" rel="noreferrer">File Upload in Silverlight - a Simple Solution</a></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload