0

我正在使用 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) 的图像。所以请提供一些方法,我可以上传包含任何类型图像名称的图像。

4

1 回答 1

0

在您的常规表达式上添加一个 \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),但它可以解决您的问题。

问候

于 2013-09-08T23:53:43.957 回答