** Excel 형식 파일 하나를 만들고 확장 유형을 ". docx"로 변경했습니다. 업로드하려고하지만 콘텐츠 및 확장 유형 모두 다릅니다. 그럼 그 하나는 내가 마술 번호와 마임 타입과 함께 이것을 피하기 위해 몇 가지 코드를 시도했지만 마법의 숫자는 단어에 대한 동일하고 엑셀 및 우편 번호를 또한 내가 마임 타입도 변경 확장을 변경하면 차단해야합니다. 그래서 나는asp.net C에서 파일 확장자가 excel에서 word로 고유하게 변경되었습니다.
string FileExtension = FileName.Substring((FileName.LastIndexOf(".") + 1)).ToUpper();
string MagicNumber = HexaDecimalData.Substring(0, 47);
string HexaDecimalData=string.Empty;
string MimeType = MimeMapping.GetMimeMapping(_File.FileName);
using (var fileStream = File.OpenRead(FileName))
{
BinaryReader Reader = new BinaryReader(fileStream);
Reader.BaseStream.Position = 0x0; // The offset you are reading the data from
byte[] data = Reader.ReadBytes(0x10); // Read 16 bytes into an array
HexaDecimalData = BitConverter.ToString(data);
Reader.Close();
} switch (FileExtension)
{
case "XLS":
if ((!MimeType.Equals("application/excel", StringComparison.OrdinalIgnoreCase) &&
!MimeType.Equals("application/vnd.ms-excel", StringComparison.OrdinalIgnoreCase) &&
!MimeType.Equals("application/x-excel", StringComparison.OrdinalIgnoreCase) &&
!MimeType.Equals("application/x-msexcel", StringComparison.OrdinalIgnoreCase)) ||
(!MagicNumber.StartsWith("D0-CF-11-E0-A1-B1-1A-E1")))
ErrorMessage = "Invalid File";
break;
case "XLSX":
if ((!MimeType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", StringComparison.OrdinalIgnoreCase)) ||
(!MagicNumber.StartsWith("50-4B-03-04") && !MagicNumber.StartsWith("50-4B-05-06") && !MagicNumber.StartsWith("50-4B-07-08")))
ErrorMessage = "Invalid File";
break;
case "PDF":
if ((!MimeType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase)) || (!MagicNumber.StartsWith("25-50-44-46")))
ErrorMessage = "Invalid File";
break;
case "DOCX":
if ((!MimeType.Equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document", StringComparison.OrdinalIgnoreCase)) ||
(!MagicNumber.StartsWith("50-4B-03-04") && !MagicNumber.StartsWith("50-4B-05-06") && !MagicNumber.StartsWith("50-4B-07-08")))
ErrorMessage = "Invalid File";
break;
case "DOC":
if ((!MimeType.Equals("application/msword", StringComparison.OrdinalIgnoreCase)) || (!MagicNumber.StartsWith("D0-CF-11-E0-A1-B1-1A-E1")))
ErrorMessage = "Invalid File";
break;
}
excel 및 word에 대한 ur 설명문은 모두 동일한 ScanFileForMimeType "application/x-zip-compressed"을 반환합니다. 따라서 올바른 단어를 찾을 수 없습니다. –
@ Subramaniyan.V 내 업데이트 된 답변 읽기, 그것은 'Renan'답변 –