我遇到一个奇怪的问题,我正在处理一个组件。该组件具有包含文件上传的表单。代码检查重复的文件名并在最后附加一个计数器。除了我尝试修改记录并更改关联文件之外,所有这些工作都很完美。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:
我知道这件事情简单,但我在它一直盯着太久看看吧!
谢谢!
您是否拥有在该文件夹中写入的所有权限? “它只打破了形式更新而不是新的表单提交”,你是什么意思?所以第一次工作,当你更新它不? – borracciaBlu 2015-04-02 04:26:56
我对文件夹有权限。我可以提交表单,文件将按预期上传。如果我点击某条记录进行编辑并尝试更改附件,就会出现问题。 – 2015-04-04 23:57:56