2013-11-11 5 views
-1

Так что я пытаюсь добавить функцию загрузки на страницу контакта, которая будет разрешать только определенные типы файлов. Файлы должны храниться в корневом каталоге в папке «загрузить». Однако файлы не загружаются, и я получаю ошибку «неправильный файл» (как запрограммирован) в файле PDF и docx, но не могу понять, почему. Может ли кто-нибудь дать представление?PHP Загрузить для определенного типа файла, «недопустимый тип файла»?

<?php 

    if($_POST) { 

     if($_POST["token"]==true){ 
     $allowedExts = array("pdf","docx", "doc"); 
     $temp = explode(".", $_FILES["file"]["name"]); 
     $extension = end($temp); 
     if ((($_FILES["file"]["type"] == "application/pdf") 
     || ($_FILES["file"]["type"] == "application/docx") 
     || ($_FILES["file"]["type"] == "application/doc")) 
     && ($_FILES["file"]["size"] < 20000) 
     && in_array($extension, $allowedExts)) 
      { 
      if ($_FILES["file"]["error"] > 0) 
      { 
      echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
      } 
      else 
      { 
      echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
      echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
      echo "Size: " . ($_FILES["file"]["size"]/6144) . " kB<br>"; 
      echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

      if (file_exists("upload/" . $_FILES["file"]["name"])) 
       { 
       echo $_FILES["file"]["name"] . " already exists. "; 
       } 
      else 
       { 
       move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . rand().$extension); 
       echo "Stored in: " . "upload/" . "rand().$extension)"; 
       } 
      } 
      } 
     else 
      { 
      echo "Invalid file"; 
      } 
?> 
+0

Должно ли 'docx' находиться в вашей разрешенной массиве расширений? В настоящее время его нет. Вы пытались отладить это, чтобы определить, где вы получаете значения, которых вы не ожидаете? –

+0

И 'echo $ _FILES [" file "] [" type "]', чтобы убедиться, что это так, как вы думаете. – AbraCadaver

+0

Как сейчас, эти фигурные скобки не совпадают. Это, очевидно, не источник ошибки, но меня это беспокоит, как он вообще компилируется? – enrey

ответ

0

Тип файла для файла DOCX не application/docx но application/vnd.openxmlformats-officedocument.wordprocessingml.document, хотя вы также можете увидеть его как application/zip; тип mime для файла doc равен application/msword , а не application/doc

+0

. Кроме того, 'docx' даже не находится в массиве' $ allowedExts'. – kba

+0

@kba - правда также; и множество форматов изображений находятся в списке разрешенных расширений, но нет тестов для их типа –

Смежные вопросы