Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá! Tenho um sistema de upload de arquivos aqui mas não consigo fazer com que na hora do upload o php substitua o espaço no nome dos arquivos por (_), pois a URL ficará inválida se não tiver o underline. Estou errando em alguma coisa? Devo trocar algo?
A função que usei foi essa: $new_name = preg_replace('/\s+/', '_', $new_name);
Antes tentei str_replace...
Obrigado!
<?php
if(isset($_FILES['fileUpload']))
{
date_default_timezone_set("Brazil/East"); //Definido timezone padrão
$ext = strtolower(substr($_FILES['fileUpload']['name'],-4)); //Pegando extensão do arquivo
$new_name = preg_replace('/\s+/', '_', $new_name);
$new_name = date('d.m.Y' . "_-_" . 'H:i:s_-_') . ($_FILES['fileUpload']['name']); //Definido um novo nome para o arquivo
$dir = '/home/u637554205/public_html/uploads/arquivos/'; //Diretório para uploads
move_uploaded_file($_FILES['fileUpload']['tmp_name'], $dir.$new_name); //Fazer upload do arquivo
}Mas dessa forma o nome do arquivo não aparece...
$new_name = preg_replace('/\s+/', '_', $new_name);
Você está fazendo replace em uma variável vazia.
Onde está a inicialização da variável $new_name?
Coloquei invertido...
A inicialização:
$new_name = date('d.m.Y' . "_-_" . 'H:i:s_-_') . ($_FILES['fileUpload']['name']);
Replace:
$new_name = preg_replace('/\s+/', '_', $new_name);
A variável $new_name já tem a função de renomear o arquivo adicionando o tempo que o arquivo foi enviado.
o replace funciona, mas você desfaz a modificação, pois passa a usar $_FILES em vez de $new_name
Troque esta linha:
$new_name = date('d.m.Y' . "_-_" . 'H:i:s_-_') . ($_FILES['fileUpload']['name']); //Definido um novo nome para o arquivo
por esta:
$new_name = date('d.m.Y' . "_-_" . 'H:i:s_-_') . $new_name; //Definido um novo nome para o arquivo