Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bobrinha

Como retirar extensão do arquivo ao enviar pada o DB

Recommended Posts

Olá, por favor alguém poderia me dizer como faço para que no script abaixo ao salvar o arquivo no banco de dados o mesmo seja salvo sem as extensões? somente com o novo nome ?

 

<?php
include "../conexao.php"; 
// Pasta onde o arquivo vai ser salvo
$_UP['pasta'] = 'swf/';

// Tamanho máximo do arquivo (em Bytes)
$_UP['tamanho'] = 4024 * 4024 * 2; // 8Mb

// Array com as extensões permitidas
$_UP['extensoes'] = array('swf');

// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)
$_UP['renomeia'] = true;

// Array com os tipos de erros de upload do PHP
$_UP['erros'][0] = 'Não houve erro';
$_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';
$_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
$_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';
$_UP['erros'][4] = 'Não foi feito o upload do arquivo';

// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro
if ($_FILES['arquivo']['error'] != 0) {
die("Não foi possível fazer o upload do arquivo flash" . $_UP['erros'][$_FILES['arquivo']['error']]);
exit; // Para a execução do script
}

// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar

// Faz a verificação da extensão do arquivo
$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
if (array_search($extensao, $_UP['extensoes']) === false) {
echo "Por favor, envie arquivos com extensões permitidas";
}

// Faz a verificação do tamanho do arquivo
else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {
echo "O arquivo enviado é muito grande";
}

// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
else {
// Primeiro verifica se deve trocar o nome do arquivo
if ($_UP['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão
$nome_final = time().'.swf';
} else {
// Mantém o nome original do arquivo
$nome_final = $_FILES['arquivo']['name'];
}

// Depois verifica se é possível mover o arquivo para a pasta escolhida
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {
// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
echo "Upload efetuado com sucesso!";
} 
else {
// Não foi possível fazer o upload, provavelmente a pasta está incorreta
echo "Não foi possível enviar o arquivo, tente novamente";
}

// Pasta onde o arquivo vai ser salvo
$_UP2['pasta'] = 'img/';

// Tamanho máximo do arquivo (em Bytes)
$_UP2['tamanho'] = 1024 * 1024 * 2; // 2Mb

// Array com as extensões permitidas
$_UP2['extensoes'] = array('jpg', 'png', 'gif');

// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)
$_UP2['renomeia'] = true;

// Array com os tipos de erros de upload do PHP
$_UP2['erros'][0] = 'Não houve erro';
$_UP2['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';
$_UP2['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
$_UP2['erros'][3] = 'O upload do arquivo foi feito parcialmente';
$_UP2['erros'][4] = 'Não foi feito o upload do arquivo';

// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro
if ($_FILES['imagem']['error'] != 0) {
die("Não foi possível fazer o upload da imagem<br />" . $_UP2['erros'][$_FILES['imagem']['error']]);
exit; // Para a execução do script
}

// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar

// Faz a verificação da extensão do arquivo
$extensao2 = strtolower(end(explode('.', $_FILES['imagem']['name'])));
if (array_search($extensao2, $_UP2['extensoes']) === false) {
echo "Por favor, envie arquivos com as seguintes extensões: jpg, png ou gif";
}

// Faz a verificação do tamanho do arquivo
else if ($_UP2['tamanho'] < $_FILES['imagem']['size']) {
echo "O imagem enviada é muito grande";
}

// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
else {
// Primeiro verifica se deve trocar o nome do arquivo
if ($_UP2['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg
$nome_final2 = time().'.png';
} else {
// Mantém o nome original do arquivo
$nome_final2 = $_FILES['imagem']['name'];
}

// Depois verifica se é possível mover o arquivo para a pasta escolhida
if (move_uploaded_file($_FILES['imagem']['tmp_name'], $_UP2['pasta'] . $nome_final2)) {

$sql = mysql_query ("INSERT INTO teste (flash,imagem) VALUES ('$nome_final','$imagem')");

// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
echo "Upload efetuado com sucesso!";
} else {
// Não foi possível fazer o upload, provavelmente a pasta está incorreta
echo "Não foi possível enviar a imagem, tente novamente";
}

}}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui:

 

if ($_UP['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão
$nome_final = time().'.swf';
} else {
// Mantém o nome original do arquivo
$nome_final = $_FILES['arquivo']['name'];
}

E aqui:

 

if ($_UP2['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg
$nome_final2 = time().'.png';
} else {
// Mantém o nome original do arquivo
$nome_final2 = $_FILES['imagem']['name'];
}

caso as variávei de configuração ($_UP e $_UP2) tiverem a opção renomeia como TRUE, dentro do IF, de cada um desses blocos você simplesmente apaga o . '.swf' e . '.png'.

 

Se aquela configuração for FALSE, então, obviamente não tem como apagar. Assim sendo, você substitui ambos os casos por:

 

$nome_final = basename( $_FILES['arquivo']['name'] );

E por:

 

$nome_final2 = basename( $_FILES['imagem']['name'] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno Augusto obrigado

 

Porém, da forma que você disse o arquivo não sera renomeados eu quero que eles sejam renomiados sim e então salvar no BD somente o novo nome mais sem as extensões

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas você leu o que eu escrevi?

 

Caso as variávei de configuração ($_UP e $_UP2) tiverem a opção renomeia como TRUE, dentro do IF, de cada um desses blocos você simplesmente apaga o . '.swf' e . '.png'.

Ou seja, você quer que renomeia e configurou o script para isso, então seguindo o que disse basta apagar as extensões .swf e .png e o operador de concatenação antes delas (o ponto) e pronto, o arquivo será renomeado sem a extensão.

 

Agora, se você de fato leu e fez conforme eu orientei, e ainda assim não renomeou, então pode ser que o script não esteja funcionando de acordo com aquilo que se espera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno Augusto acho que não entendeu :( vou tentar explicar mais claramente

 

Seu tirar a extensão na hora de renomear então ele vai manter o arquivo com a mesma extensão ou seja se o arquivo imagem for gif ele vai continuar .gif mais quero que todas as imagens seja elas .gif .jpg etc fiquem com a extensão .png e no banco so salve o novo nome

 

Basicamente é renomear, das nova extensão e no db so salvar o novo nome

 

Ta complicado já to apanhando a dias e nada de resultados :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte coloque um:

 

var_dump( $nome_final ); exit;

Fora do IF que cria a variável $nome_final

 

Obs: O exit é para interromper a execução e não prosseguir com o upload.

 

Veja se aquilo que é mostrado é uma string numérica, resultado de time().

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.