Автор Тема: Контактная форма запись файла вложения  (Прочитано 927 раз)

23 Апрель 2016, 12:51:49
Ответ #15
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
А чему присваевать если $file_name пустой FALSE.
Даже если он и пустой функция uniqid() возвращает уникальный идентификатор с префиксом на основе текущего времени в микросекундах.
Должно быть имя файла вот такого вида "571b43ecabf60".

file_name = strstr($_FILES[$input]['name'], '.');Это сохранение расширения файла ".JPG", ".pdf", ".jpeg" и т.д.

$file_attachment['rename'] = uniqid().Tools::strtolower($file_name);Это генерация уникальнго идентификатора + сохраненное расширение.

В результате имя загружаемого файла "мой файл.JPG" меняется на "571b43ecabf60.jpg".
23 Апрель 2016, 13:09:33
Ответ #16
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Можно изменить функцию fileAttachment, файл на русском будет перекодирован в латиницу.
public static function fileAttachment($input = 'fileUpload', $return_content = true)
{
        $file_attachment = null;
        if (isset($_FILES[$input]['name']) && !empty($_FILES[$input]['name']) && !empty($_FILES[$input]['tmp_name']))
{
$f = $_FILES[$input]['name'];
$f = (string) $f;
$f = strip_tags($f);
$f = str_replace(array("\n", "\r"), " ", $f);
$f = preg_replace("/\s+/", ' ', $f);
$f = trim($f);
$f = Tools::strtolower($f);
$f = strtr($f, array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'e','ж'=>'j','з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shch','ы'=>'y','э'=>'e','ю'=>'yu','я'=>'ya','ъ'=>'','ь'=>''));
$f = preg_replace("/[^0-9a-z-_. ]/i", "", $f); // очищаем строку от недопустимых символов, только цифры + буквы + точка
$f = str_replace(" ", "-", $f);

$file_attachment['rename'] = uniqid(). (substr($f, -5));
if ($return_content)
{
$file_attachment['content'] = file_get_contents($_FILES[$input]['tmp_name']);
}

$file_attachment['tmp_name'] = $_FILES[$input]['tmp_name'];
$file_attachment['name']     = $f;
$file_attachment['mime']     = $_FILES[$input]['type'];
$file_attachment['error']    = $_FILES[$input]['error'];
$file_attachment['size']     = $_FILES[$input]['size'];
        }

return $file_attachment;
}