【发布时间】:2014-08-13 21:05:29
【问题描述】:
我正在开发一个内容插件,它向 com_content 组件添加了一些额外的字段,其中一个字段的类型是“文件”,声明如下:
<field
name="zp_zipupl"
type="file"
onchange="jQuery(this).closest('form').attr('enctype','multipart/form-data')"
label="PLG_CONTENT_CUSTOMFIELDZ_ZP_ZIPUPL"
/>
...我正在处理 onContentPrepare 内容事件的上传过程,如下所示:
function onContentPrepare($context,&$article,&$params,$page){
$input = new JInputFiles();
$files = $input->get('jform');
if($files) foreach ($files as $inputFile) {
foreach ($inputFile as $file) {
$tmp_dir = $file['tmp_name'];
$dest_dir = JPATH_SITE.'/uploads/projects/';
$file_name_ext = $file['name'];
JFile::upload($tmp_dir,$dest_dir . $file_name_ext);
}
}
}
问题:
保存文章后,我收到错误“警告:无法移动文件”,但如果我进入“uploads/project/”目录,文件就在那里,所以它可以工作,但字段值未存储在数据库中。
如果我删除此字段的“onchange”事件,该值将存储在数据库中,但由于未指定表单 enctype,因此不会上传文件(即使我手动编辑了 com_content 文章/tmpl/edit查看并设置enctype 我在上传时遇到了同样的问题。
我已经为 J! 调整了插件代码! 2.5 + 相同的 onContentPrepare 代码 => 相同的行为,但文件未上传。
- 所有目录都有正确的权限并且存在。
- Joomla! 3.3 / Joomla! 2.5.24 PHP 5.4(本地)/5.3(共享主机)
- $tmp_dir 目录 - 在 localhost (Linux, XAMPP) - 是 “选择/lampp/temp/”
- $tmp_dir 目录 - 在共享主机上 - 是 "/tmp/"
*另外,onContentPrepareForm 如果我想用 $form->getValue('field_name');它不起作用......
这是什么原因造成的?
谢谢!
【问题讨论】:
-
请将您的解决方案添加为正确答案并将其标记为已解决
标签: file-upload joomla joomla2.5 joomla3.0 joomla3.3