在 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 组件中需要的文件上传器,例如模板徽标上传器

试图找到在 Joomla 2.5 组件中提取数据库项目的最佳方法

响应式文件管理器上传内存限制,但仅限于图像

开发组件:菜单项出错

Joomla 3.9.13 中的随机图像模块有问题吗?