2015-04-02 28 views
0

我遇到一个奇怪的问题,我正在处理一个组件。该组件具有包含文件上传的表单。代码检查重复的文件名并在最后附加一个计数器。除了我尝试修改记录并更改关联文件之外,所有这些工作都很完美。Joomla开发 - 无法移动文件

我用组件创建器创建这些代码骨架工程的更新 -

//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 2015-04-02 04:26:56

+0

我对文件夹有权限。我可以提交表单,文件将按预期上传。如果我点击某条记录进行编辑并尝试更改附件,就会出现问题。 – 2015-04-04 23:57:56

回答

0

好吧,因为它是我看不出有什么好的理由为什么失败。

我可以建议你的唯一的事情是JFile::upload失败去调试/libraries/joomla/filesystem/[email protected]并且一步一步地试着了解什么是错的。

这实际上是文件和行JFile::upload
在有可能您所关心的唯一行是行502是:

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

特别试一下,看看发生了什么事情的变量$ret