コード例 #1
0
        public KS3Object Handle(HttpWebResponse response)
        {
            KS3Object ks3Object = new KS3Object();

            FileInfo destinationFile = _getObjectRequest.DestinationFile;

            byte[] content = null;

            IProgressListener progressListener = _getObjectRequest.ProgressListener;

            var metadata = new ObjectMetadata();

            RestUtils.PopulateObjectMetadata(response, metadata);
            ks3Object.Metadata = metadata;

            Stream input = null, output = null;

            try
            {
                input = response.GetResponseStream();

                if (progressListener != null)
                {
                    input = new ProgressReportingInputStream(input, progressListener);
                }

                int    SIZE = Constants.DEFAULT_STREAM_BUFFER_SIZE;
                byte[] buf  = new byte[SIZE];

                if (destinationFile != null)
                {
                    output = new FileStream(_getObjectRequest.DestinationFile.FullName, FileMode.Create);
                }
                else
                {
                    content = new byte[metadata.GetContentLength()];
                    output  = new MemoryStream(content);
                }

                for (; ;)
                {
                    int size = input.Read(buf, 0, SIZE);
                    if (size <= 0)
                    {
                        break;
                    }
                    output.Write(buf, 0, size);
                }
            }
            finally
            {
                if (input != null)
                {
                    input.Close();
                }

                if (output != null)
                {
                    output.Close();
                }
            }

            if (destinationFile != null)
            {
                ks3Object.ObjectContent = destinationFile.OpenRead();
            }
            else
            {
                ks3Object.ObjectContent = new MemoryStream(content);
            }
            return(ks3Object);
        }