コード例 #1
0
        public Element ReadNextElement()
        {
            if (_atEof || ReadBoundary())
            {
                return(null);
            }

            var    elem = new Element();
            string header;

            while ((header = ReadHeaders()) != null)
            {
                if (StrUtils.StartsWith(header, "Content-Disposition:", true))
                {
                    elem.Name     = GetContentDispositionAttribute(header, "name");
                    elem.Filename = StripPath(GetContentDispositionAttributeWithEncoding(header, "filename"));
                }
                else if (StrUtils.StartsWith(header, "Content-Type:", true))
                {
                    elem.ContentType = header.Substring("Content-Type:".Length).Trim();
                }
            }

            var start = data.Position;

            elem.Start = start;
            var pos = MoveToNextBoundary();

            if (pos == -1)
            {
                return(null);
            }

            elem.Length = pos - start;
            return(elem);
        }