Esempio n. 1
0
 /// <summary>
 /// Método acionado quando o número de bytes escritos for atualizado.
 /// </summary>
 /// <param name="item"></param>
 /// <param name="numBytesWritten"></param>
 private void UpdateNumBytesWritten(Colosoft.Net.IUploaderItem item, long numBytesWritten)
 {
     item.NumberBytesSent += numBytesWritten;
     if (_progressTimer.ElapsedMilliseconds > (_elapsedMilliseconds + 1000))
     {
         OnProgressChanged();
         _elapsedMilliseconds = _progressTimer.ElapsedMilliseconds;
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Cria a stream com os parametros para a requisição.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private System.Net.HttpWebRequest CreateStreamRequest(Colosoft.Net.IUploaderItem item)
        {
            byte[] buffer   = new byte[1024];
            int    read     = 0;
            string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");

            byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
            System.Net.HttpWebRequest request = CreateRequest(Url);
            request.ContentType = "multipart/form-data; boundary=" + boundary;
            request.Method      = "POST";
            request.KeepAlive   = true;
            request.Credentials = System.Net.CredentialCache.DefaultCredentials;
            var info = new Colosoft.Net.UploaderItemInfo(item);

            using (var outputStream = GetRequestStream(item, request))
            {
                outputStream.Write(boundarybytes, 0, boundarybytes.Length);
                string header      = "Content-Disposition: form-data; name=\"info\";\r\nContent-Type:application/octet-stream\r\n\r\n";
                byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
                outputStream.Write(headerbytes, 0, headerbytes.Length);
                var serializer = new System.Xml.Serialization.XmlSerializer(typeof(Colosoft.Net.UploaderItemInfo));
                serializer.Serialize(outputStream, info);
                outputStream.Write(boundarybytes, 0, boundarybytes.Length);
                header      = "Content-Disposition: form-data; name=\"data\"; filename=\"item.data\"\r\nContent-Type:application/octet-stream\r\n\r\n";
                headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
                outputStream.Write(headerbytes, 0, headerbytes.Length);
                using (var itemStream = item.GetContent())
                    while ((read = itemStream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        outputStream.Write(buffer, 0, read);
                    }
                byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
                outputStream.Write(trailer, 0, trailer.Length);
            }
            return(request);
        }
Esempio n. 3
0
 /// <summary>
 /// Processa os dados recebidos pelo upload.
 /// </summary>
 /// <param name="item"></param>
 protected virtual void ProcessUpload(Colosoft.Net.IUploaderItem item)
 {
 }
Esempio n. 4
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="uploader"></param>
 /// <param name="item"></param>
 public TracingUploadStream(System.IO.Stream stream, Uploader uploader, Colosoft.Net.IUploaderItem item) : base(stream)
 {
     _uploader = uploader;
     _item     = item;
 }
Esempio n. 5
0
 /// <summary>
 /// Recupera a stream para enviar os dados da requisição.
 /// </summary>
 /// <param name="item"></param>
 /// <param name="request"></param>
 /// <returns></returns>
 private System.IO.Stream GetRequestStream(Colosoft.Net.IUploaderItem item, System.Net.HttpWebRequest request)
 {
     return(new TracingUploadStream(request.GetRequestStream(), this, item));
 }