2013-09-06 3 views
0

Я использую Joomla и создал галерею изображений для компонента K2. Я хочу загрузить изображение в свою галерею и использовать его вдали от названия мусора. Я использовал $fileName = preg_replace('/[^\w\._]+/', '_', $fileName); . Я могу загружать изображения с помощью «- (тире)» в них, но он создает проблему при загрузке изображений с «пробелами» в них и дает ошибка.Проблема Загрузка изображения в Joomla PHP

**JFile: :copy: Cannot find or read file: $/opt/lampp/htdocs/joomla_2.5/images/folkgallery/tmp/14 .jpg** 

Когда я удаляю выше кода preg_match то я могу загрузить изображения с пробелами в них, но не в состоянии загрузить изображения - (тире) в них. Так любезно предоставите способ, которым я могу загрузить изображение с любым типом имени изображения, которое он содержит.

+0

Пожалуйста, покажите больше своего кода, в частности частей, которые имена файлов обрабатывают и обрабатывают. – MasterAM

ответ

0

Добавьте a \ s в свою обычную expfession, чтобы соответствовать пробелу.

[^ \ ш \ s._]

Edit: с большим количеством испытаний, я думаю, что это выражение достаточно для ваших нужд:

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), но он решает вашу проблему.

С уважением

Смежные вопросы