private string Flush(byte[] buffer, int count, bool generateRequires)
		{
			if(buffer == null)
				throw new ArgumentNullException("buffer");

			if(count > buffer.Length)
				throw new ArgumentOutOfRangeException("count");

			if(count < 1)
				return null;

			//按需发起初始化请求
			this.Initiate();

			StorageMultipart multipart = null;

			if(generateRequires)
			{
				//创建一个上传的数据块
				multipart = new StorageMultipart((int)Math.Ceiling((double)_length / _buffer.Length));

				//将该数据块加入到列表中
				_multiparts.Add(multipart);
			}

			//创建请求
			var request = _client.CreateHttpRequest(HttpMethod.Put, _path + string.Format("?partNumber={0}&uploadId={1}", multipart.Index, _id), _extendedProperties);

			//保持长连接
			request.Headers.Connection.Add("keep-alive");
			//设置请求内容
			request.Content = new ByteArrayContent(_buffer, 0, count);

			return _http.SendAsync(request).ContinueWith(t =>
			{
				if(t.Result.IsSuccessStatusCode)
				{
					if(multipart != null)
						multipart.Checksum = t.Result.Headers.ETag.Tag;

					return t.Result.Headers.ETag.Tag;
				}
				else
				{
					if(multipart != null)
						multipart.SetData(_buffer, 0, count);

					return null;
				}
			}).Result;
		}
Пример #2
0
        private string Flush(byte[] buffer, int count, bool generateRequires)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException("buffer");
            }

            if (count > buffer.Length)
            {
                throw new ArgumentOutOfRangeException("count");
            }

            if (count < 1)
            {
                return(null);
            }

            //按需发起初始化请求
            this.Initiate();

            StorageMultipart multipart = null;

            if (generateRequires)
            {
                //创建一个上传的数据块
                multipart = new StorageMultipart((int)Math.Ceiling((double)_length / _buffer.Length));

                //将该数据块加入到列表中
                _multiparts.Add(multipart);
            }

            //创建请求
            var request = _client.CreateHttpRequest(HttpMethod.Put, _path + string.Format("?partNumber={0}&uploadId={1}", multipart.Index, _id), _extendedProperties);

            //保持长连接
            request.Headers.Connection.Add("keep-alive");
            //设置请求内容
            request.Content = new ByteArrayContent(_buffer, 0, count);

            return(_client.HttpClient.SendAsync(request).ContinueWith(t =>
            {
                if (t.Result.IsSuccessStatusCode)
                {
                    if (multipart != null)
                    {
                        multipart.Checksum = t.Result.Headers.ETag.Tag;
                    }

                    return t.Result.Headers.ETag.Tag;
                }
                else
                {
                    if (multipart != null)
                    {
                        multipart.SetData(_buffer, 0, count);
                    }

                    return null;
                }
            }).Result);
        }