2013-02-20 3 views
0

Я загружаю изображение с #included имя, но изображение не отображается.Проблема с загрузкой изображений в php

Пример, если я создал имя файла 5677PlayadelRey,#4_LR.jpg Файловая система Joomla не может его загрузить, но если я назову 5677PlayadelRey,Unit4_LR. jpg, он работал нормально.

Спасибо за продвижение.

+0

Что значит «файловая система Joomla не может его загрузить»? Что Joomla пытается сделать с изображением, которое требует загрузки изображения? – Oswald

ответ

1

Это потому, что символ # обозначает хэш/ID на странице. Это незаконный символ для использования в URL-адресе.

Запятые , также то, что не должно быть в пределах URL

+0

если можно использовать #. Могу ли я использовать имя изображения с # или нет? мой клиент хочет использовать имя изображения с # –

+0

@AbhishekPandey см. мой ответ. http://stackoverflow.com/a/14972529/1270996 –

1

Вы можете использовать urlencode чтобы убедиться, что имя файла является безопасным для URL-адресов.

http://php.net/manual/en/function.urlencode.php

Вы можете использовать это только тогда, когда вам нужно использовать имя файла в URL. Вы можете хранить свои имена файлов так, как хотите.

0

# не передаются в URL, так что используйте что-нибудь Заменить #

0

попробовать это с

<?php 
    // define a constant for the maximum upload size 
    define ('MAX_FILE_SIZE', 1024 * 50); 

    if (array_key_exists('upload', $_POST)) { 
     // define constant for upload folder 
     define('UPLOAD_DIR', '/path/to/images/'); 
     // replace any spaces in original filename with underscores 
     $file = str_replace('#', '_', $_FILES['image']['name']); 
     // create an array of permitted MIME types 
     $permitted = array('image/gif', 'image/jpeg', 'image/pjpeg', 
    'image/png'); 

     // upload if file is OK 
     if (in_array($_FILES['image']['type'], $permitted) 
      && $_FILES['image']['size'] > 0 
      && $_FILES['image']['size'] <= MAX_FILE_SIZE) { 
     switch($_FILES['image']['error']) { 
      case 0: 
      // check if a file of the same name has been uploaded 
      if (!file_exists(UPLOAD_DIR . $file)) { 
       // move the file to the upload folder and rename it 
       $success = 
    move_uploaded_file($_FILES['image']['tmp_name'], UPLOAD_DIR . 
    $file); 
      } else { 
       $result = 'A file of the same name already exists.'; 
      } 
      if ($success) { 
       $result = "$file uploaded successfully."; 
      } else { 
       $result = "Error uploading $file. Please try again."; 
      } 
      break; 
      case 3: 
      case 6: 
      case 7: 
      case 8: 
      $result = "Error uploading $file. Please try again."; 
      break; 
      case 4: 
      $result = "You didn't select a file to be uploaded."; 
     } 
     } else { 
     $result = "$file is either too big or not an image."; 
     } 
    } 
    ?> 
0

Если вы используете Joomla, требует, чтобы все имена файлы буквенно-цифровые символы + подчеркивание. Многие плагины, которые вы устанавливаете, скорее всего, будут основаны на этом предположении. Вещи, скорее всего, нарушатся иначе.

0

В вашем методе, который обрабатывает изображение:

jimport('joomla.filesystem.file'); 
$input = JFactory::getApplication()->input; 

затем используйте

$your_photo_name = JFile::makeSafe($input->get('your_photo_name'); 

Это сделает имя файла, чтобы быть безопасным для использования в Joomla! system

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