根据 .NET Core 文件名中的 ContentType 添加文件扩展名

问题描述 投票:0回答:1

我需要使用上传的文件扩展名保存文件。例如,如果文件名是“Test_upload”,我必须将文件扩展名附加到该名称。因此,我只有可用的内容类型。下面是示例代码 if (suggestedFileName != null && !System.IO.Path.HasExtension(suggestedFileName)) { // Get the file extension from the ContentType string[] contentTypeParts = HttpContext.Request.ContentType.Split('/'); if (contentTypeParts.Length == 2) { string fileExtension = contentTypeParts[1]; // Handle spreadsheets differently if (fileExtension == "vnd.openxmlformats-officedocument.spreadsheetml.sheet") { // For spreadsheet, use '.xlsx' extension suggestedFileName = $"{suggestedFileName}.xlsx"; } else { // For other file types, append the retrieved extension suggestedFileName = $"{suggestedFileName}.{fileExtension}"; } } else { // Default to '.txt' extension if content type doesn't have two parts suggestedFileName = $"{suggestedFileName}.txt"; } }

如何处理任何类型的 ContentType 有人可以帮忙吗

c# .net asp.net-core asp.net-core-webapi backend
1个回答
0
投票

{ {"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xlsx"}, {"application/pdf", "pdf"}, {"image/jpeg", "jpg"}, {"image/png", "png"}, {"text/plain", "txt"}, }; if (suggestedFileName != null && !System.IO.Path.HasExtension(suggestedFileName)) { string contentType = HttpContext.Request.ContentType; string fileExtension = "txt"; if (mimeTypeToExtension.TryGetValue(contentType, out var extension)) { fileExtension = extension; } else { string[] contentTypeParts = contentType.Split('/'); if (contentTypeParts.Length == 2) { string subtype = contentTypeParts[1]; fileExtension = subtype; } } suggestedFileName += $".{fileExtension}"; }

© www.soinside.com 2019 - 2024. All rights reserved.