/// <summary> /// Convert an image in a data URI string /// </summary> /// <param name="path">The path is used just to determine the mime type</param> /// <param name="bytes">The actual binary content of the image</param> internal static string ConvertImageToDataUri(string path, byte[] bytes) { int dotIndex = path.LastIndexOf('.'); string extension = dotIndex > 0 ? path.Substring(dotIndex) : string.Empty; string mime = MimeTypeNames.FromExtension(extension); return($"data:{mime};base64,{Convert.ToBase64String(bytes)}"); }
/// <summary> /// Gets the content-type from the response's headers. The default type /// is derived from the file extension of the path, if any. /// </summary> /// <param name="response">The response to examine.</param> /// <returns>The provided or default content-type.</returns> public static MimeType GetContentType(this IResponse response) { var fileName = response.Address.Path; var index = fileName.LastIndexOf('.'); var extension = index >= 0 ? fileName.Substring(index) : ".a"; var defaultType = MimeTypeNames.FromExtension(extension); return(response.GetContentType(defaultType)); }
public void CommonMimeTypesAreCorrectlyDefined() { Assert.AreEqual("image/apng", MimeTypeNames.FromExtension(".apng")); Assert.AreEqual("image/avif", MimeTypeNames.FromExtension(".avif")); Assert.AreEqual("image/gif", MimeTypeNames.FromExtension(".gif")); Assert.AreEqual("image/jpeg", MimeTypeNames.FromExtension(".jpeg")); Assert.AreEqual("image/jpeg", MimeTypeNames.FromExtension(".jpg")); Assert.AreEqual("image/jxl", MimeTypeNames.FromExtension(".jxl")); Assert.AreEqual("image/png", MimeTypeNames.FromExtension(".png")); Assert.AreEqual("image/svg+xml", MimeTypeNames.FromExtension(".svg")); Assert.AreEqual("image/webp", MimeTypeNames.FromExtension(".webp")); }
/// <summary> /// Appends a file to the input element. /// Requires the input element to be of type "file". /// </summary> /// <typeparam name="TElement">The type of element.</typeparam> /// <param name="input">The input to append to.</param> /// <param name="filePath">The path to the file, which should be appended.</param> /// <returns>The input itself for chaining.</returns> public static TElement AppendFile <TElement>(this TElement input, String filePath) where TElement : class, IHtmlInputElement { filePath = filePath ?? throw new ArgumentNullException(nameof(filePath)); var name = Path.GetFileName(filePath); var ext = Path.GetExtension(filePath); var type = MimeTypeNames.FromExtension(ext); var stream = File.OpenRead(filePath); var modified = File.GetLastWriteTimeUtc(filePath); var file = new InputFile(name, type, stream, modified); return(input.AppendFile(file)); }
/// <summary> /// Gets the content-type from the response's headers. /// </summary> /// <param name="response">The response to examine.</param> /// <param name="defaultType">The default type to apply.</param> /// <returns>The provided or default content-type.</returns> public static MimeType GetContentType(this IResponse response, String defaultType) { var fileName = response.Address.Path; var index = fileName.LastIndexOf('.'); if (index >= 0) { var extension = fileName.Substring(index); defaultType = MimeTypeNames.FromExtension(extension); } var value = response.Headers.GetOrDefault(HeaderNames.ContentType, defaultType); return(new MimeType(value)); }