Esempio n. 1
0
        /// <summary>
        /// Initialize<br/>
        /// 初始化<br/>
        /// </summary>
        /// <param name="parentContext">Parent context</param>
        /// <param name="owinRequest">Original http request</param>
        public OwinHttpRequestWrapper(
            OwinHttpContextWrapper parentContext, IOwinRequest owinRequest)
        {
            ParentContext = parentContext;
            OwinRequest   = owinRequest;
            OwinContent   = new StreamContent(OwinRequest.Body);
            var contentType = OwinRequest.ContentType ?? "";

            if (!string.IsNullOrEmpty(contentType))
            {
                OwinContent.Headers.Add("Content-Type", contentType);
            }
            OwinFormCollection = new Lazy <NameValueCollection>(() => {
                if (contentType.StartsWith("application/x-www-form-urlencoded"))
                {
                    return(OwinContent.ReadAsFormDataAsync().Result);
                }
                return(null);
            });
            OwinMultipartFormCollection = new Lazy <Dictionary <string, IList <HttpContent> > >(() => {
                if (contentType.StartsWith("multipart/form-data"))
                {
                    var result   = new Dictionary <string, IList <HttpContent> >();
                    var provider = OwinContent.ReadAsMultipartAsync().Result;
                    foreach (var content in provider.Contents)
                    {
                        var key = content.Headers.ContentDisposition.Name.Trim('"');
                        result.GetOrCreate(key, () => new List <HttpContent>()).Add(content);
                    }
                    return(result);
                }
                return(null);
            });
            HttpContentReadResults = new Dictionary <HttpContent, string>();
        }
Esempio n. 2
0
        public static async Task ParseFiles(Stream data, string contentType, Action <string, Stream> fileProcessor)
        {
            var streamCotent = new StreamContent(data);

            streamCotent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType);
            if (streamCotent.IsMimeMultipartContent())
            {
                var provider = await streamCotent.ReadAsMultipartAsync();

                foreach (var httpContent in provider.Contents)
                {
                    var filename = httpContent.Headers.ContentDisposition.FileName;
                    using (var fileContents = await httpContent.ReadAsStreamAsync())
                    {
                        if (string.IsNullOrWhiteSpace(filename))
                        {
                            fileProcessor(httpContent.Headers.ContentDisposition.Name.Trim('\"'), fileContents);
                            continue;
                        }
                        fileProcessor(filename.Trim('\"'), fileContents);
                    }
                }
            }
            else
            {
                var formdata = await streamCotent.ReadAsFormDataAsync();

                var str = await streamCotent.ReadAsStringAsync();

                var stream = await streamCotent.ReadAsStreamAsync();
            }
        }