2012-02-08 3 views
0
var $imagefile = $('<input />') 
    .attr({ 
     type: 'file', 
     name: 'imageFile', 
     id: 'imageFile' 
    }); 

Выше мой код, который создает ввод файла.как проверить формат файла на стороне сервера

Ниже приведен код, который проверяет, если формат файла является правильным в строке таблицы:

function validation() { 

    var marks = parseInt($("#total-weight").text());  
    var _qid = ""; 
    var _msg = ""; 


    var allowedTypes = ["jpg", "jpeg", "gif", "png"]; 

    var path = $("#imageFile").val(); 
    var ext = path.substring(path.lastIndexOf('.') + 1).toLowerCase(); 


    var alertValidation = ""; 
    // Note, this is just so it's declared... 
    $("tr.optionAndAnswer").each(function() { 


     _qid = $("td.qid",this).text(); 
     _msg = "You have errors on Question Number: " + _qid + "\n"; 


     $("#imageFile",this).each(function() { 

     if ($.inArray(ext, allowedTypes) < 0) { 
     alertValidation += '\n\u2022 Unsupported file type'; 
     } 

     if (alertValidation != "") { 
       return false; //Stop the each loop 
      } 

    }); 

     if(alertValidation != ""){ 
      return false; 
     } 
    }); 


    if (alertValidation != "") { 
     alert(_msg + alertValidation); 
     return false; 
    } 

    return true; 
} 

Теперь Проверяется для форматов файлов в стороне клиента, но как я могу также проверить его на стороне сервера с помощью PHP?

+0

Что вы подразумеваете под «проверкой на стороне сервера»? Что ты хочешь делать? – Cheery

+0

Мне сказали, что я могу не только проверить формат файла на стороне клиента, но и проверить его на стороне сервера, я действительно не знаю, что это значит, но они сказали, что если вы не проверяете его на стороне сервера, тогда возникают проблемы с безопасностью. Я считаю, что мне нужно проверить его на стороне сервера, используя php-кодирование. – user1182476

ответ

0

Как только файл загружен, вы можете просто взглянуть на $_FILES['imageFile']['type'], чтобы получить тип mime.

+0

Где я могу поместить это в свой код, это просто отдельный тег php и вставить код или этот код нужно поместить в javascript-функцию между php теги? – user1182476

+0

Вы можете поместить это в любом месте в своем php-коде. PHP никак не связан с javascript, поэтому никогда не спрашивайте об этом. –

0

Я хотел бы использовать finfo_file функцию РНР:

http://www.php.net/manual/en/function.finfo-file.php

Пример из PHP страницы:

<?php 
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 
foreach (glob("*") as $filename) { 
    echo finfo_file($finfo, $filename) . "\n"; 
} 
finfo_close($finfo); 

Выходы:

текст/html
изображение/GIF
приложение/vnd.ms-excel

+0

Есть ли способ, которым я могу использовать этот код, чтобы проверить файл на стороне сервера, но не показывать информацию о файле или не использовать его или нет, я хочу использовать предупреждение, чтобы указать, является ли файл действительным или нет? Я уже настроил предупреждение. – user1182476

2

Попробуйте этот код.

<?php 
$allowedImageTypes = array("image/pjpeg","image/jpeg","image/jpg","image/png","image/x-png","image/gif"); 
$file = $_FILES['imageFile']; 
$fileType = $file['type']; 
if (!in_array($fileType, $allowedImageTypes)) { 
    echo "Unsupported file type"; 
} 
else 
{ 
    // Process the file 
} 
?> 

EDIT

Поскольку пользователь спросил о том, как проверить файлы сервера, а также. Он может использовать этот способ, чтобы проверить это.

<?php 

$filePath = "image/image.jpg"; 
list($width, $height, $type, $attr) = getimagesize($filePath); 
$fileType = image_type_to_mime_type($type); 
$allowedImageTypes = array("image/pjpeg","image/jpeg","image/jpg","image/png","image/x-png","image/gif"); 
if (!in_array($fileType, $allowedImageTypes)) { 
    echo "Unsupported file type"; 
} 
else 
{ 
    // Process the file 
} 

?> 
+0

этот код также входит в тег javascript