2012-06-24 2 views
1

Язык: PHP/Использование Class Upload by Colin Verot
О: Multiple ВыгрузкаПолучить расширение файла для нескольких загружаемых файлов (класс Загрузить, PHP)

код, приведенный ниже уже закачивает файлы в порядке, это работает ...
ПРОБЛЕМА: У меня возникли проблемы с определением, как получить имя файла extension.
(В комментарии ниже, я указал, где моя проблема район ...)

// CONNECTION TO DATABASE HERE... 

// INCLUDE UPLOAD CLASS LIBRARY 
include (dirname(__FILE__).'/lib/class.upload.php'); 

$files = array(); 
foreach ($_FILES['fileupload'] as $k => $l) 
{ 
    foreach ($l as $i => $v) 
    { 
     if (!array_key_exists($i, $files)) 
     $files[$i] = array(); 
     $files[$i][$k] = $v; 
     $imagename = $_FILES['fileupload']['name']; 
    } 
} 

foreach ($files as $file) { 

      // THIS IS MY PROBLEM AREA, GETTING FILE EXTENSION 
      $ext=strchr($imagename,"."); 

      $generate_name = rand(100,99999); 
      $generate_name_extra = rand(200,9999); 
      $filenamex = "PHOTO_".$generate_name.$generate_name_extra."_".time(); 
      $filenamex_thumb = $filenamex."_thumb"; 

      // COMPLETE FILENAME WITH EXTENSION 
      $filename = $filenamex.strtolower($ext); 
      $handle = new upload($file); 
      if ($handle->uploaded) { 
      ///// 1 //////////////////////////////////////////////////////////////////// 
      $handle->file_new_name_body = $filenamex_thumb; 
      $handle->image_resize   = true; 
      $handle->image_x    = '300'; 
      $handle->image_ratio_y  = true; 
      $handle->jpeg_quality = '100'; 

      // ABSOLUTE PATH BELOW 
      $handle->process($absoRoot.'covers/thumbs/'); 

      if ($handle->processed) { 

      // SUCCESSFUL RESPONSE 

     } 
     else 
     { 

     // FAILED RESPONSE 

     }  
    } 
} 

И Webform является:

<form method="post" action="upload.php" enctype="multipart/form-data"> 
<input name="fileupload[]" id="fileupload" type="file" multiple> 

Я действительно очень много нужно расширения файлов, чтобы служить файлы правильно онлайн, но я не могу определить, где его найти. Я попытался использовать: $files[$i][$k] вместо $imagename в моей указанной проблемной области выше, а также $file и других возможных решениях, но я не могу определить, какой из них даст мне имя файла с расширением.

Надеюсь, кто-то может указать на это. Спасибо за ваше время и помощь!

+0

Это точно мой вопрос. В моем коде выше (где я сделал комментарий) я показал свою * проблемную область *, где предполагается расщепление имени файла + расширение. Дело в том, что я не могу понять, почему '$ imagename' не работает. Я использую это для одной загрузки и работает, тогда как с этим экземпляром это не так. – Mafia

+0

В PHP загруженный файл не всегда является загруженным файлом. Попробуйте увидеть какие-либо ошибки. Http://stackoverflow.com/questions/10938408/move-uploaded-file/10938669#10938669 –

ответ

1
$ext=array_pop(explode('.', $imagename)); 
+0

Это тоже не работает с моим кодом. Файл изображения возвращался как 'filnamearray' вместо ожидаемого' filename.jpg' – Mafia

+0

** print_r ($ ext) ** посмотреть, что $ ext содержит –

+0

С небольшим количеством настроек, я попробовал '$ image = $ _FILES ['fileupload ']['имя']; $ imagename = array_pop ($ image); 'и используется' $ ext = strchr ($ imagename, "."); 'и это сработало! :) Это был ** array_pop **, который сделал это! Спасибо огромное! – Mafia

0

Функция, которую вы ищете, это pathinfo().

$pathdata = pathinfo($filename); 
$extension = $pathdata['extension']; 
Смежные вопросы