コード例 #1
0
        NameValueCollection ExtractMultipartFormDataArgumentsFromDataList(ICommunicationContext ctx, StreamReader reader)
        {
            var provider   = _multipartMemoryStreamProviderFactory.New();
            var tempStream = _memoryStreamFactory.New();

            var reqContentStream = ctx.Request.Content.ReadAsStreamAsync().Result;

            reqContentStream.CopyTo(tempStream);

            var byteArray = reader.BaseStream.ToByteArray();
            var stream    = _memoryStreamFactory.New(byteArray);

            stream.CopyTo(tempStream);

            tempStream.Seek(0, SeekOrigin.End);
            var writer = _streamWriterFactory.New(tempStream);

            writer.WriteLine();
            writer.Flush();
            tempStream.Position = 0;

            var streamContent         = _streamContentFactory.New(tempStream);
            var requestContentHeaders = ctx.Request.Content.Headers;

            foreach (var header in requestContentHeaders.Headers)
            {
                streamContent.Headers.Add(header.Key, header.Value);
            }

            streamContent.ReadAsMultipartAsync(provider).Wait();
            var valuePairs = new NameValueCollection();

            foreach (HttpContent content in provider.Contents)
            {
                var contentDisposition = content.Headers.ContentDisposition;
                var name     = contentDisposition.Name.Trim('"');
                var byteData = content.ReadAsByteArrayAsync().Result;

                var contentType = content.Headers.ContentType;
                var mediaType   = contentType?.MediaType;
                if (mediaType == null)
                {
                    valuePairs.Add(name, byteData.ReadToString());
                    continue;
                }

                valuePairs.Add(name, byteData.ToBase64String());
            }

            return(valuePairs);
        }
コード例 #2
0
ファイル: DoPutAction.cs プロジェクト: kapiya/Warewolf
        int WriteData(Stream src, IActivityIOPath dst)
        {
            var streamLength = (int)src.Length;

            if (_arguments.Overwrite)
            {
                _fileWrapper.WriteAllBytes(dst.Path, src.ToByteArray());
                return(streamLength);
            }
            if (FileExist(dst, _fileWrapper) || !_arguments.Overwrite)
            {
                using (var stream = _fileStreamFactory.New(dst.Path, FileMode.Append))
                {
                    _memoryStreamFactory.New(src.ToByteArray()).CopyTo(stream);
                }
                return(streamLength);
            }
            return(-1);
        }