-2
Я пытаюсь загрузить файл на веб-страницу, который позволяет только расширение PDF. Но если я изменил расширение любого файла (например, a.jpeg) на .pdf, который будет похож на a.jpeg.pdf, а затем его можно загрузить на веб-страницу. Поэтому я хочу проверить несколько расширений в одном файле перед загрузкой на веб-страницу.Как проверить несколько расширений файла перед загрузкой на веб-страницу
Ниже приведено мое кодирование.
if (file != null && file.ContentLength > 0)
{
int MaxContentLength = 1024 * 1024 * 4;
string[] AllowedFileExtensions = new string[] { ".pdf" };
if (!AllowedFileExtensions.Contains(file.FileName.Substring(file.FileName.LastIndexOf('.'))))
{
ModelState.AddModelError("File", "(SERVER)Please select file of type: " + string.Join(", ", AllowedFileExtensions));
return RedirectToAction("AddNewRule", "CreateRule");
}
else if (file.ContentLength > MaxContentLength)
{
ModelState.AddModelError("File", "(SERVER)Your file is too large, maximum allowed size is: " + MaxContentLength + " MB");
return RedirectToAction("AddNewRule","CreateRule");
}
var fileName = Path.GetFileName(file.FileName);
var filetype = Path.GetExtension(fileName);
var mimeType = MimeMapping.GetMimeMapping(filetype);
if (mimeType == "application/pdf")
{
var path = Path.Combine(Server.MapPath("~/Files"), fileName);
file.SaveAs(path);
rule_add.File_Name = fileName;
rule_add.File_Path = path;
rule_add.File_Page = addrule.pagenum;
}
else
{
ModelState.AddModelError("File", "(SERVER)This file doesn't has valid content ");
return RedirectToAction("AddNewRule", "CreateRule");
}
}
Благодарим за помощь.
Возможно, более надежная проверка будет проверять содержимое файла вместо расширения? Например, см. [Как определить, является ли файл PDF или TIFF?] (Http://stackoverflow.com/questions/2731917/how-to-detect-if-a-file-is-pdf-or-tiff) , –
Возможно, вместо того, чтобы полагаться на расширения имен файлов, вы должны проверить, является ли загруженный файл pdf через ['pdf header'] (http://stackoverflow.com/questions/6186980/determine-if-a-byte-is- a-pdf-файл) – Nico
Если вы ** измените ** расширение 'a.jpeg'from' jpeg' на 'pdf', это' a.pdf', а не 'a.jpeg.pdf'. –