2015-04-02 5 views
0

У меня странная проблема с компонентом, над которым я работаю. Компонент имеет форму, которая включает загрузку файла. Код проверяет дубликаты имен файлов и добавляет счетчик в конец. Все это отлично работает, за исключением того, что я пытаюсь изменить запись и изменить связанный файл.Joomla Development - Не удалось переместить файл

Я использовал компонент создателя построить скелет в этом коде работает для обновления -

//Replace any special characters in the filename 
        $filename = explode('.', $file['name']); 
        $filename[0] = preg_replace("/[^A-Za-z0-9]/i", "-", $filename[0]); 

        //Add Timestamp MD5 to avoid overwriting 
        $filename = md5(time()) . '-' . implode('.',$filename); 
        $uploadPath = '/var/www/plm_anz/' . $filename; 
        $fileTemp = $file['tmp_name']; 
        if(!JFile::exists($uploadPath)){ 
         if (!JFile::upload($fileTemp, $uploadPath)){ 
          JError::raiseWarning(500, 'Error moving file'); 
          return false; 
         } 
        } 
        $array['ping_location'] = $filename; 

Когда я обновить код, чтобы удалить сумму MD5 и добавляемый счетчик все это разваливается ..

//Replace any special characters in the filename 
         $filename = explode('.', $file['name']); 
         $filename[0] = preg_replace("/[^A-Za-z0-9]/i", "-", $filename[0]); 
         $originalFile = $finalFile = $file['name']; 
         $fileCounter = 1; 
         //Rename duplicate files 
         $fileprefix = pathinfo($originalFile, PATHINFO_FILENAME); 
         $extension = pathinfo($originalFile, PATHINFO_EXTENSION); 
         while (file_exists('/var/www/plm_anz/'.$finalFile)){ 
          $finalFile = $fileprefix . '_' . $fileCounter++ . '.' . $extension; 
         } 

         $uploadPath = '/var/www/plm_anz/' . $finalFile; 
         $fileTemp = $file['tmp_name']; 

         if (!JFile::upload($fileTemp, $uploadPath)){ 
          $fileMessage = "Error moving file - temp file:". $fileTemp . " Upload path ". $uploadPath; 
          JError::raiseWarning(500, $fileMessage); 
          return false; 
         } 

Я сузил причину имени файла, которое создает цикл while, но не может понять, почему он только нарушает обновление формы, а не форму представления новой формы.

Я получаю ошибку в Joomla (3.4):

Error

Error moving file - temp file:/tmp/phpgwag5r Upload path /var/www/plm_anz/com_hotcase_6.zip

Save failed with the following error:

Я знаю, что это что-то простое, но я смотрел на него слишком долго, чтобы увидеть его!

Спасибо!

+0

У вас есть все права на запись в папку? Что вы имеете в виду: «это только разрывает обновление формы, а не новую форму представления»? так что первый раз работает, и когда вы его обновляете, нет? – borracciaBlu

+0

У меня есть разрешение на папку. Я могу отправить форму, и файлы будут загружаться, как и ожидалось. Проблема возникает, если я нажимаю на запись для ее редактирования и пытаюсь изменить прикрепленный файл. –

ответ

0

Хорошо, я не вижу никакой веской причины, по которой это происходит.

Единственное, что я могу вам предложить, это то, что JFile::upload не подходит для отладки в /libraries/joomla/filesystem/[email protected] и шаг за шагом попытайтесь понять, что не так.

Это фактически файл и строка JFile::upload.
там, вероятно, единственная линия, которая имеет значение для вас линия 502, которая является:

if (is_writeable($baseDir) && move_uploaded_file($src, $dest)) 

Особенно попытаться увидеть, что происходит на переменной $ret.

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