在 Joomla PHP 中上传图像问题
Posted
技术标签:
【中文标题】在 Joomla PHP 中上传图像问题【英文标题】:Issue uploading image in Joomla PHP 【发布时间】:2013-09-10 04:38:09 【问题描述】:我正在使用 Joomla 并为 K2 组件创建了图片库。我想将图像上传到我的画廊,并用于远离垃圾名称,我使用了$fileName = preg_replace('/[^\w\._]+/', '_', $fileName);
这样我可以上传带有“-(破折号)”的图像,但是在上传带有“空白”的图像时会产生问题并给出错误。
**JFile: :copy: Cannot find or read file: $/opt/lampp/htdocs/joomla_2.5/images/folkgallery/tmp/14 .jpg**
当我删除上面的代码 preg_match 时,我可以上传带有空格的图像,但不能上传带有 -(dash) 的图像。所以请提供一些方法,我可以上传包含任何类型图像名称的图像。
【问题讨论】:
请显示更多代码,特别是文件名称和处理文件复制的部分。 【参考方案1】:在您的常规表达式上添加一个 \s 以匹配空格。
[^\w\s._]
编辑:经过更多测试,我认为这个表达式足以满足您的需求:
preg_replace('/[_|\s]+/i', '-', 'fil ename_1.jpg');
会产生
fil-ename-1.jpg
但是,对于 Joomla,我敢打赌最好使用它(正如这里所说:http://docs.joomla.org/Secure_coding_guidelines#File_uploads)
$file = JRequest::getVar( 'Filedata', '', 'files', 'array' );
jimport('joomla.filesystem.file');
$file['name'] = JFile::makeSafe($file['name']);
if (isset( $file['name'] ))
$filepath = JPath::clean( $somepath.'/'.strtolower( $file['name'] ) );
JFile::upload( $file['tmp_name'], $filepath );
链接已过时(JRequest 已弃用,建议使用 JInput),但它解决了您的问题。
问候
【讨论】:
以上是关于在 Joomla PHP 中上传图像问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Phocagallery - Joomla 中显示特定用户上传的图像?
joomla 3 组件中需要的文件上传器,例如模板徽标上传器