我需要使用上传的文件扩展名保存文件。例如,如果文件名是“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 有人可以帮忙吗
{
{"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}";
}