Я разрабатываю веб-сайт с использованием Angular JS + Codeigniter.

Проблема заключается в загрузке изображений. Имена файлов с пробелом не будут загружены (например: "first image.jpg").

Если мы удалим пространство, оно будет загружено (например, "firstimage.jpg"). Это моя конфигурация.

$config = array(
  'allowed_types'     => 'jpg|jpeg|gif|png', 
  'max_size'          => 2048, //2MB max
  'upload_path'       => $this->original_path,
  'remove_spaces'     => true
);

$this->load->library('upload', $config);
1
Muhammed Mansoor 30 Май 2016 в 06:46

3 ответа

Лучший ответ

Удалите ненужные пробелы и символы из имени файла с помощью.

$file_name = $_FILES["userfiles"]['name'];
$newfile_name= preg_replace('/[^A-Za-z0-9]/', "", $file_name);

$config = array('allowed_types'     => 'jpg|jpeg|gif|png', 
'upload_path'       => $this->original_path,
'file_name'=>$newfile_name);
0
Yadhu Babu 30 Май 2016 в 09:48

Во-первых, я бы спросил: "Что не так с удалением пробелов в том виде, в котором они есть?" Вы действительно хотите, чтобы загруженные файлы оставались с пробелами?

Чистый способ сделать это - формализовать то, что вы уже нашли, и объединить логику в новый класс или метод некоторого существующего (контроллера?) Класса:

  • Решите, каков полный диапазон допустимых символов для имен файлов, загружаемых пользователем в ваше приложение / сайт.
  • Создайте регулярное выражение, которое преобразует различные входные строки (например, имена файлов с пробелами, символы табуляции и любые другие нежелательные вещи) в пригодное для использования имя файла в соответствии с вашими требованиями.
  • Вызовите эту функцию / класс :: функция соответственно
0
theruss 30 Май 2016 в 03:54

Попробуйте эту функцию, если в вашем имени файла есть только пробелы:

Когда вы получаете свои данные в контроллер в этой функции, вы должны использовать обрезку перед переходом к модели следующим образом:

$ file_name = trim ($ _ FILES ["файлы пользователей"] ['имя']); так что вы можете легко удалить пробелы из имени файла.

0
Ashish4434 31 Май 2016 в 06:06