Ir para conteúdo
Fórum Script Brasil
  • 0

Retirar extensão do upload ao enviar para o DB


Bobrinha

Pergunta

Olá pessoal, preciso da ajuda de vc6 novamente, eu tenho o script abaixo, funciona perfeitamente bem para oque preciso, porém ele salva no DB os arquivos imagem e arquivo flash com suas extensões, como faço para que salve no DB somente o novo nome sem as extensões?

<?php
include "../conexao.php"; 

$nome = ($_POST["nome"]);
$descricao = ($_POST["desc"]);
$help = ($_POST["help"]);
$categoria = ($_POST["categoria"]);

// 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 games (img,jogo,nome,descricao,categoria,votos,cliques,ajuda,ativo,bloquiado) VALUES ('$nome_final2','$nome_final','$nome','$descricao','$categoria','0','0','$help','Sim','não')") or die (mysql_error());

// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
echo "Upload efetuado com sucesso!";
echo $sql;
} 

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";
}

}}

?>

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0
Você pode, antes de salvar, utilizar um explode.

Por exemplo..

$imagem=foto1.jpg;
$img=explode(".",$imagem);
echo $img[1]; //Será exibido apenas "foto1"
Ai pra gravar no banco fica fácil....
Se a imagem possui um nome com pontuação, isso vai dar errado, pois o explode() vai retornar 3 valores. E ainda, para pegar o nome do arquivo, você deveria usar $img[0]. O ideal é usar pathinfo mesmo.
$nomeArquivo = pathinfo($_FILES['imagem']['name'], PATHINFO_FILENAME);

Editado por mJi
Link para o comentário
Compartilhar em outros sites

  • 0
Você pode, antes de salvar, utilizar um explode.

Por exemplo..

$imagem=foto1.jpg;
$img=explode(".",$imagem);
echo $img[1]; //Será exibido apenas "foto1"
Ai pra gravar no banco fica fácil....
Se a imagem possui um nome com pontuação, isso vai dar errado, pois o explode() vai retornar 3 valores. E ainda, para pegar o nome do arquivo, você deveria usar $img[0]. O ideal é usar pathinfo mesmo.
$nomeArquivo = pathinfo($_FILES['imagem']['name'], PATHINFO_FILENAME);

Realmente, não tinha pensado na possibilidade da imagem ter um "." no nome.

Vou pesquisar mais sobre o pathinfo.

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

for ($i=strlen($nomeArquivo)-1;$i>=0;$i--)
if ($nomeArquivo[$i] == ".")
{
$nomeArquivo = substr($nomeArquivo, 0, $i);
    break;
}

echo $nomeArquivo;

sempre vai tirar a extensão...

Editado por Churc
Link para o comentário
Compartilhar em outros sites

  • 0
for ($i=strlen($nomeArquivo)-1;$i>=0;$i--)
if ($nomeArquivo[$i] == ".")
{
$nomeArquivo = substr($nomeArquivo, 0, $i);
    break;
}

echo $nomeArquivo;

sempre vai tirar a extensão...

Não da certo não faz o upload do arquivo, não sei o que fazer meu deus....

Link para o comentário
Compartilhar em outros sites

  • 0

uma dica para ver a extensão do arquivo

extensao = strtolower( end( explode( ".", $nomearquivo ) ) );

ai é só remover ela do seu arquivo

uma coisa tambem que pode fazer..

o php envia para o arquivo /tmp do servidor certo?

depois que enviou voce usa

move_uploaded_file ( Origem, Destino )

no destino coloca sem a extensão como falaram ai em cima

ou seja a logica seria +-

recebe o [file]

pega o que enviaram e muda o nome dele sem a extensão

move para o local final sem a extensão

Link para o comentário
Compartilhar em outros sites

  • 0

olha só, juntando o que todo mundo falou ai em cima..

a função que o Churc passou e o que falei do moveupload

faz um teste e adapta ao seu codigo

<?
function RemoveExt($nomeArquivo)
{
    for ($i=strlen($nomeArquivo)-1;$i>=0;$i--)
    if ($nomeArquivo[$i] == ".")
    {
    $nomeArquivo = substr($nomeArquivo, 0, $i);
        break;
    }
    
    return $nomeArquivo;
}

if($_POST['UpLoad'])
{
     if($arquiv_up != "")
         {
        $NomeEnviado = $_FILES["arquiv_up"]["name"];
        $tmp_name = $_FILES["arquiv_up"]["tmp_name"];
            $SemExtensao = RemoveExt($NomeEnviado);
        
             $arquivo = $_FILES["arquiv_up"]["name"];

             echo "<br>Temporario :".$tmp_name; //Local que vai receber o upload temporario no servidor
             echo "<br>Enviado : ".$NomeEnviado; // Nome que o usuario envio pelo upload
             echo "<br>Nome para salvar : ".$SemExtensao; //Nome do arquivo que sera salvo na base e no diretorio
        
             //movendo arquivo do temporario para o novo nome
             move_uploaded_file($_FILES['arquiv_up']['tmp_name'], "/diretorio/".$SemExtensao);
     }
     exit;
}
?>


<html>
<head>
<meta http-equiv="Content-Language" content="pt-br">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form name="upload" method="POST" action="" enctype="multipart/form-data">
Arquivo: </b><input type="file" name="arquiv_up" class="caixa_normal">
<input type="submit" value="Upload" name="UpLoad"></p>
</form>
<br><br>
</body>
</html>

Editado por jissa
Link para o comentário
Compartilhar em outros sites

  • 0

olha só..

Mais facil ainda. fui ver o seu codigo..

coloque a função que tem ai em cima RemoveExt no seu codigo

no seu codigo tem

$nome_final = $_FILES['arquivo']['name'];

coloque:

$nome_final = $_FILES['arquivo']['name'];

$nome_final = RemoveExt($nome_final );

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, obrigado a todos que estão me ajudando, porém ainda não consegui, segue o codigo completo alterado mais continua jogando a extensão no DB

Banco de dados

--

-- Estrutura da tabela `games`

--

CREATE TABLE `games` (

`id` int(10) NOT NULL auto_increment,

`img` varchar(255) NOT NULL,

`jogo` varchar(255) NOT NULL default '',

`nome` varchar(255) NOT NULL default '',

`descricao` text NOT NULL,

`categoria` varchar(255) NOT NULL default '',

`votos` int(25) NOT NULL default '0',

`cliques` int(10) NOT NULL default '0',

`ajuda` text NOT NULL,

`ativo` enum('Sim','não') NOT NULL default 'Sim',

`bloquiado` enum('Sim','não') NOT NULL default 'não',

PRIMARY KEY (`id`),

KEY `active` (`ativo`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4679 ;

--

-- Extraindo dados da tabela `games`

--

Formulario

<?php
include "../conexao.php"; 
?>
<form method="post" action="upload.php" enctype="multipart/form-data">

  <table width="600" border="0" cellspacing="5">
    <tr>
      <td>Nome:</td>
      <td><input type="text" name="nome" id="nome"></td>
    </tr>
    <tr>
      <td>Descri&ccedil;&atilde;o</td>
      <td><textarea name="desc" id="desc" cols="45" rows="5"></textarea></td>
    </tr>
    <tr>
      <td>Como jogar</td>
      <td><textarea name="help" id="help" cols="45" rows="5"></textarea></td>
    </tr>
    <tr>
      <td>Categoria</td>
      <td><select name="categoria" size="1" class="Entrar" id="categoria">
    <?php
      $sql = mysql_query("SELECT * FROM categories ORDER BY name ASC");
      while($dados = mysql_fetch_array($sql)) {
          echo'  <option value="'.$dados['id'].'">'.$dados['name'].'</option>'."\n";
      }
    ?>
  </select></td>
    </tr>
    <tr>
      <td>Flash</td>
      <td><input type="file" name="arquivo" id="arquivo"/>
        </p></td>
    </tr>
    <tr>
      <td>Imagem</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="file" name="imagem" id="imagem"></td>
    </tr>
  </table>
  <p>
  <input type="submit" value="Enviar" />
</p>
</form>
upload.php
<?php
include "../conexao.php"; 

function RemoveExt($nome_final2)
{
    for ($i=strlen($nome_final2)-1;$i>=0;$i--)
    if ($nome_final2[$i] == ".")
    {
    $nome_final2 = substr($nome_final2, 0, $i);
        break;
    }
    
    return $nome_final2;
}

$nome = ($_POST["nome"]);
$descricao = ($_POST["desc"]);
$help = ($_POST["help"]);
$categoria = ($_POST["categoria"]);

// 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'];
$nome_final2 = RemoveExt($nome_final2 );
}

// Depois verifica se é possível mover o arquivo para a pasta escolhida
if (move_uploaded_file ($_FILES['imagem']['tmp_name'], $_UP2['pasta'] . $nome_final2)) {
//$nome_final2 = pathinfo($_FILES['imagem']['name'], PATHINFO_FILENAME);
$sql = mysql_query ("INSERT INTO games (img,jogo,nome,descricao,categoria,votos,cliques,ajuda,ativo,bloquiado) VALUES ('$nome_final2','$nome_final','$nome','$descricao','$categoria','0','0','$help','Sim','não')") or die (mysql_error());

// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
echo "Upload efetuado com sucesso!";
echo $sql;
} 

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";
}

}}

?>

Link para o comentário
Compartilhar em outros sites

  • 0

voce tam varios lugares que tem este nome do arquivo.. colocou em um..

exemplo aqui não colocou

// 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'];

}

todos que for enviar vai ser removido, certo?? que tem lugar ai que renomeia para time().png

se for poara todos coloca isto antes do move_upload ai

tira do lugar que colocou e coloca antes dele, deixa como estava e coloca

ficaria:

$nome_final2 = RemoveExt($nome_final2);

// 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 games (img,jogo,nome,descricao,categoria,votos,cliques,ajuda,ativo,bloquiado) VALUES ('$nome_final2','$nome_final','$nome','$descricao','$categoria','0','0','$help','Sim','não')") or die (mysql_error());

agora se quiser colocar no codigo procure por todos os lugares que tenha o nome_final2 e coloque a função nele

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...