public static bool HasFileContentDisposition(ContentDispositionHeaderValue?contentDisposition) { // Content-Disposition: form-data; name="myfile1"; filename="Misc 002.jpg" return(contentDisposition != null && contentDisposition.DispositionType.Equals("form-data") && (!string.IsNullOrEmpty(contentDisposition.FileName.Value) || !string.IsNullOrEmpty(contentDisposition.FileNameStar.Value))); }
public static bool HasFormDataContentDisposition(ContentDispositionHeaderValue?contentDisposition) { // Content-Disposition: form-data; name="key"; return(contentDisposition != null && contentDisposition.DispositionType.Equals("form-data") && string.IsNullOrEmpty(contentDisposition.FileName.Value) && string.IsNullOrEmpty(contentDisposition.FileNameStar.Value)); }
/// <summary> /// Creates a new instance of the <see cref="FormMultipartSection"/> class /// </summary> /// <param name="section">The section from which to create the <see cref="FormMultipartSection"/></param> /// <param name="header">An already parsed content disposition header</param> public FormMultipartSection(MultipartSection section, ContentDispositionHeaderValue?header) { if (header == null || !header.IsFormDisposition()) { throw new ArgumentException("Argument must be a form section", nameof(section)); } Section = section; _contentDispositionHeader = header; Name = HeaderUtilities.RemoveQuotes(_contentDispositionHeader.Name).ToString(); }
public override bool Equals([NotNullWhen(true)] object?obj) { ContentDispositionHeaderValue?other = obj as ContentDispositionHeaderValue; if (other == null) { return(false); } return(string.Equals(_dispositionType, other._dispositionType, StringComparison.OrdinalIgnoreCase) && HeaderUtilities.AreEqualCollections(_parameters, other._parameters)); }
public static bool TryParse([NotNullWhen(true)] string?input, [NotNullWhen(true)] out ContentDispositionHeaderValue?parsedValue) { int index = 0; parsedValue = null; if (GenericHeaderParser.ContentDispositionParser.TryParseValue(input, null, ref index, out object?output)) { parsedValue = (ContentDispositionHeaderValue)output !; return(true); } return(false); }
/// <summary> /// Creates a new instance of the <see cref="FileMultipartSection"/> class /// </summary> /// <param name="section">The section from which to create the <see cref="FileMultipartSection"/></param> /// <param name="header">An already parsed content disposition header</param> public FileMultipartSection(MultipartSection section, ContentDispositionHeaderValue?header) { if (header is null || !header.IsFileDisposition()) { throw new ArgumentException("Argument must be a file section", nameof(section)); } Section = section; _contentDispositionHeader = header; Name = HeaderUtilities.RemoveQuotes(_contentDispositionHeader.Name).ToString(); FileName = HeaderUtilities.RemoveQuotes( _contentDispositionHeader.FileNameStar.HasValue ? _contentDispositionHeader.FileNameStar : _contentDispositionHeader.FileName).ToString(); }
private static int GetDispositionTypeLength(StringSegment input, int startIndex, out ContentDispositionHeaderValue?parsedValue) { Contract.Requires(startIndex >= 0); parsedValue = null; if (StringSegment.IsNullOrEmpty(input) || (startIndex >= input.Length)) { return(0); } // Caller must remove leading whitespaces. If not, we'll return 0. var dispositionTypeLength = GetDispositionTypeExpressionLength(input, startIndex, out var dispositionType); if (dispositionTypeLength == 0) { return(0); } var current = startIndex + dispositionTypeLength; current = current + HttpRuleParser.GetWhitespaceLength(input, current); var contentDispositionHeader = new ContentDispositionHeaderValue(); contentDispositionHeader._dispositionType = dispositionType; // If we're not done and we have a parameter delimiter, then we have a list of parameters. if ((current < input.Length) && (input[current] == ';')) { current++; // skip delimiter. int parameterLength = NameValueHeaderValue.GetNameValueListLength(input, current, ';', contentDispositionHeader.Parameters); parsedValue = contentDispositionHeader; return(current + parameterLength - startIndex); } // We have a ContentDisposition header without parameters. parsedValue = contentDispositionHeader; return(current - startIndex); }
/// <summary> /// Attempts to parse the specified <paramref name="input"/> as a <see cref="ContentDispositionHeaderValue"/>. /// </summary> /// <param name="input">The value to parse.</param> /// <param name="parsedValue">The parsed value.</param> /// <returns><see langword="true"/> if input is a valid <see cref="ContentDispositionHeaderValue"/>, otherwise <see langword="false"/>.</returns> public static bool TryParse(StringSegment input, [NotNullWhen(true)] out ContentDispositionHeaderValue?parsedValue) { var index = 0; return(Parser.TryParseValue(input, ref index, out parsedValue !)); }