Jump to content
Fórum Script Brasil
  • 0

Retirar extensão do upload ao enviar para o DB


Bobrinha

Question

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 to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Ueh, basta passar pra consulta apenas o nome do arquivo.

Você pode extrair apenas o nome com pathinfo(), passando a constante 'PATHINFO_FILENAME' no segundo parâmetro.

Link to comment
Share on other 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);

Edited by mJi
Link to comment
Share on other 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 to comment
Share on other 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...

Edited by Churc
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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>

Edited by jissa
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...