frnd Postado Setembro 3, 2007 Denunciar Share Postado Setembro 3, 2007 Olá,Como faço para pegar a extensão do arquivo que foi feito o upload?[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 3, 2007 Denunciar Share Postado Setembro 3, 2007 TYPE... -> http://www.php.net/features.file-uploadSó cuidado que isso depende do navegador, existe um outro método só que eu não me lembro agora :(. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 3, 2007 Autor Denunciar Share Postado Setembro 3, 2007 fiz desta forma$arqfotonome = $_FILES['arqfoto']['name']; $extensao = explode(" ", $arqfotonome); echo $extensao[2];está certo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 4, 2007 Denunciar Share Postado Setembro 4, 2007 Se o nomer for, por exemplo, arquivo.doc$extensao = explode(".", $arqfotonome); echo $extensao[1]; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 4, 2007 Autor Denunciar Share Postado Setembro 4, 2007 para pegar o tamanho do arquivo é esse abaixo?$arquivo = $_FILES["arqfoto"]; $tamanho = getimagesize($arquivo); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eric Freitas Postado Setembro 4, 2007 Denunciar Share Postado Setembro 4, 2007 $_tamanho = $_FILES['arqfoto']['size'];você quer limitar a extensão?--------------------------------------------------------------$_nomeArquivo = $_FILES['arquivo']['name'];$_limitar = "sim";$_ext = ($_nomeArquivo,'.');$_extValidas = array(".gif",".jpg",".png",".etc");if($_limitar == "sim" && !in_array($_ext,$_extValidas)) die ("Extensão de arquivo invalida para upload");-------------------------------------------------------------- Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 4, 2007 Autor Denunciar Share Postado Setembro 4, 2007 Seguinte, nos uploads o usuário pode enviar um virus para o servidor, só renomeando o arquivo? Como faço para que o php veja somente que é imagem o arquivo?[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 4, 2007 Denunciar Share Postado Setembro 4, 2007 Essa apostila vai de explicar tudo que precisa saber e mais um pouco... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 4, 2007 Autor Denunciar Share Postado Setembro 4, 2007 oque significa esse erro?Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRINGestá nesta linhamysql_query("INSERT INTO informacao (idinformacao, tempo) VALUES ('', now())") or die "não foi possivel gravar na informacao"; Para facilitar: tenho o seguinte arquivo: <?php $titulo = $_REQUEST['titulo']; $endereco = $_REQUEST['endereco']; $desc = $_REQUEST['desc']; $tel = $_REQUEST['tel']; $maxpartic = $_REQUEST['maxpartic']; $data = $_REQUEST['data']; $hr = $_REQUEST['hr']; $arqfoto = $_FILES['arqfoto']; $arqfotonome = $_FILES['arqfoto']['name']; $arqfototipo = $_FILES['arqfoto']['type']; $arqfototamanho = $_FILES['arqfoto']['size']; //se existir o arquivo if(strpos($arqfototipo, 'jpg') || strpos($arqfototipo, 'jpeg') || strpos($arqfototipo, 'gif') || strpos($arqfototipo, 'bmp') && ($arqfototamanho <=50000000)){ $arquivo = $_FILES["arqfoto"]; //pega a extensao do arquivo $extensao = $arqfotonome; $arrayextensao = explode(".", $extensao); $extensaoarq = $arrayextensao[2]; //diretorio dos arquivos $pasta_dir = "./egressos_sist/paginas/midia/foto/"; //associa o nome do arquivo juntamente com o caminho dado acima $caminho = $pasta_dir . $arquivo["name"]; // Faz o upload da imagem move_uploaded_file($arquivo["tmp_name"], $arquivo_nome); //conecta no banco require_once("../biblioteca/connectmysql.php"); mysql_query("INSERT INTO informacao (idinformacao, tempo) VALUES ('', now())") or die "não foi possivel gravar na informacao"; $idinfo = mysql_insert_id(); //insere os dados de evento na tabela eventos mysql_query("INSERT INTO evento (idinformacao, descricao, endereco, telcontato, maxparticipantes, tempoevento, tempoinscricao, titulo) VALUES ($idinfo, '$desc', '$endereco', '$tel', '$maxpartic', '$hr', now(),'$titulo')") or die "não foi possivel gravar na evento"; $idevento = mysql_insert_id(); //aqui salva primeiramente na tabela de midia(pai de onde a tabela foto é herdada) mysql_query("INSERT INTO midia VALUES ($idinfo, '$url', '$arqfoto', '$extensaoarq', '$tamanho', now())") or die "não foi possivel gravar na midia"; $idmidia = mysql_query("select max(idmidia) from midia order by idmidia"); //insere na tabela midiaevento (tabela N para N) mysql_query("INSERT INTO midiaevento VALUES($idevento, $idmidia)") or die "não foi possivel gravar na midiaevento"; $idmidia = mysql_insert_id(); //aqui salva no banco o path da foto mysql_query("INSERT INTO foto VALUES ($idmidia , '$arqfotonome', '$caminho', '$extensao', '$arqfototamanho', now()") or die "não foi possivel gravar na foto"; require_once("../biblioteca/closemysql.php"); echo "<script language='JavaScript'>"; echo "window.alert('Evento cadastro com sucesso!');"; echo "</script>"; } else { echo "<script language='JavaScript'>"; echo "window.alert('Não foi possível cadastrar o evento!');"; echo "</script>"; } ?> mas aparece esse erro Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\egressos_sist\paginas\upload.php on line 34 nesta linha mysql_query("INSERT INTO informacao (idinformacao, tempo) VALUES ('', now())") or die "não foi possivel gravar na informacao"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eric Freitas Postado Setembro 4, 2007 Denunciar Share Postado Setembro 4, 2007 now() te retorna uma string?então falta ' ' em sua volta...e porque idinfo. ta vazio? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 4, 2007 Autor Denunciar Share Postado Setembro 4, 2007 esse SQL eu testei no banco e funciona certinho. Mesmo com '' não funciona... idinfo é auto incremento[]scoloquei mysql_query("INSERT INTO informacao (idinformacao, tempo) VALUES ('', 'now()')") or die "não foi possivel gravar na informacao";Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\egressos_sist\paginas\upload.php on line 42 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Geleiaskt Postado Setembro 4, 2007 Denunciar Share Postado Setembro 4, 2007 (editado) esse SQL eu testei no banco e funciona certinho. Mesmo com '' não funciona... idinfo é auto incremento[]scoloquei mysql_query("INSERT INTO informacao (idinformacao, tempo) VALUES ('', 'now()'[color="#FF0000"][b])[/b][/color]") or die "não foi possivel gravar na informacao";Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\egressos_sist\paginas\upload.php on line 42Eu não uso mensagem de erro. No caso eu uso assim:$sql = "INSERT INTO informacao (idinformacao, tempo)VALUES('', now())";$sql = mysql_query($sql);Mas se você utiliza a mensagem de erro, pode utilizar assim:mysql_query("INSERT INTO informacao (idinformacao, tempo) VALUES ('', now())") or die ("não foi possivel gravar na informacao");Testa aí amigo. Abraço! ;) Editado Setembro 4, 2007 por Geleiaskt Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 4, 2007 Autor Denunciar Share Postado Setembro 4, 2007 (editado) eu fiz assim....$sql = "INSERT INTO informacao (idinformacao, tempo) VALUES('', now())"; $sql = mysql_query($sql);mas nada... Editado Setembro 4, 2007 por frnd Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 5, 2007 Autor Denunciar Share Postado Setembro 5, 2007 Agora funcionou.. era só tirar aquela linha do 'or die..'estou fazendo algo assim $arqfoto = $_FILES['arqfoto']; $arqfotonome = $_FILES['arqfoto']['name']; $arqfototipo = $_FILES['arqfoto']['type']; $arqfototamanho = $_FILES['arqfoto']['size']; echo "$arqfototipo"; echo "<br>"; echo "$arqfotonome"; echo "<br>"; echo "$extensaoarq"; echo "<br>"; echo "$arqfototamanho"; O resultado é somente: Sample_Picture04.jpg 0 veja que o nome do arquivo vem, e mais um valor aí, o 0, mas o resto não aparece! porque? []s no html eu passo <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <td class="label">Carregar arquivo:</td> <td><input type="file" class="campodata" name="arqfoto"></td> coloquei echo filesize($arqfoto); para obter o tamanho do arquivo e retornou um erro na mesma linha Warning: filesize() [function.filesize]: stat failed for Array Bom, o filesize pega o tamanho do arquivo só quando ele for carregado! estou fazendo outra coisa mas não traz nada no resultado: $foto_temp = $_FILES["arqfoto"]["tmp_name"]; echo "NOME TEMPORÁRIO NO SERVIDOR = ".$foto_temp."<br>";Resultado assim:NOME TEMPORÁRIO NO SERVIDOR = Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 M@luco Belez@ Postado Setembro 5, 2007 Denunciar Share Postado Setembro 5, 2007 como está seu form html? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 5, 2007 Autor Denunciar Share Postado Setembro 5, 2007 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="../biblioteca/estilo/estilo.css" type="text/css" /> </head> <head> <title>Egressos</title> </head> <body> <div id="site"> <?php include_once("../biblioteca/administrador/topo.php"); ?> <div class="conteudo2"> <?php include_once("../biblioteca/esquerdoAdmin.php"); ?> <?php include_once ("../biblioteca/direitologado.php"); ?> <div class="ConteudoMeio"> <div class="CaixaLocalizacao"> <div class="Localizacao"> <a href="../index.php">Home</a> >> <b>Cadastro de Eventos</b> </div> </div> <div class="CaixaMeio"> <div class="ConteudoCxMeio2"> <form enctype="multipart/form-data" action="upload.php" class="formCad2" id="formCad2" name="formCad2" method="post"> <table class="TabelaDadosCad"> <tr> <td class="label">Título:</td> <td> <input type="text" class="camponome" name="titulo"> </td> </tr> <tr> <td class="label">Descrição:</td> <td> <input type="text" class="camponome" name="desc"> </td> </tr> <tr> <td class="label">Endereço:</td> <td> <input type="text" class="camponome" name="endereco"> </td> </tr> <tr> <td class="label">Máximo de participantes:</td> <td><input type="text" class="campodata" name="maxpartic"> </td> </tr> <tr> <td class="label">Data:</td> <td><input type="text" class="campodata" name="data"></td> </tr> <tr> <td class="label">Horário:</td> <td><input type="text" class="camporg" name="hr"></td> </tr> <tr> <td class="label">Telefone:</td> <td><input type="text" class="camporg" name="tel"></td> </tr> <tr> <input type="hidden" name="MAX_FILE_SIZE" value="3000000" /> <td class="label">Carregar arquivo:</td> <td><input type="file" class="campodata" name="arqfoto"></td> </tr> <!--tr> <td class="label">Carregar vídeo:</td> <td><input type="file" class="campodata" name="arqvideo"></td> </tr--> <tr> <td colspan="2"><br> <input type="submit" name="cadastrar" value="" class="btnCad"> <input type="reset" name="limpar" value="" class="btnLimpar"> </td> </tr> </table> </form> </div> </div> </div> </div> <?php include_once ("../biblioteca/base.php"); ?> </div> </body> </html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 6, 2007 Autor Denunciar Share Postado Setembro 6, 2007 Bom, de uma hora pra outra funcionou!Tenho outra dúvida!Se o usuário enviar um arquivo, por exemplo, a.c.jpg, como o PHP iria pegar a extensão do arquivo sendo que eu coloquei o explode na posição [1]?[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 6, 2007 Denunciar Share Postado Setembro 6, 2007 Pois é... você sempre vai ter que contar o número de elementos (sizeof) do array e pegar o última deles...porque se o cara colocar um ponto no meio do nome do arquivo já gera esse problema que você já detectou... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 6, 2007 Autor Denunciar Share Postado Setembro 6, 2007 sizeof ou count() ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 6, 2007 Denunciar Share Postado Setembro 6, 2007 sizeof é um alias (apelido) para count... ou seja, usar um ou outro dá na mesma... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 6, 2007 Autor Denunciar Share Postado Setembro 6, 2007 então eu pegaria o nome do arquivo que ele mandou jogaria dentro do count() e analisaria se existe mais de um '.' no nome?$foto_name = $_FILES['arqfoto']['name']; $array = count($foto_name); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 6, 2007 Denunciar Share Postado Setembro 6, 2007 Claro que não, o count/sizeof retornar o número de elementos de alguma coisa (no caso um array), então você tem que usar o explode para dividir o nome no ponto e ai contar quanto elemento resultaram, se for mais de dois é porque no meio do nome do arquivo tem algum ponto, se for igual a dois é porque só tem o ponto que separa o nome da extensão... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 6, 2007 Autor Denunciar Share Postado Setembro 6, 2007 É mais ou menos algo assim???$divisao = explode('.', $arqnome);$elementos = count($divisao) if ($elementos[1] = '.'){ } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 6, 2007 Denunciar Share Postado Setembro 6, 2007 Não... o PONTO é onde será dividida a string, ele mesmo vai desaparecer, por exemplo:$nome = "doumento.html"; $dividir = explode('.',$nome); /* $dividir[0] vai ser o documento $dividir[1] vai ser o html */ Dá pra fazer algo assim... $divisao = explode('.', $arqnome); $elementos = count($divisao) if ($elementos == 2){ //Aqui é se não tiver PONTO no nome do aquivo }else{ //Aqui é se tiver PONTO no nome do arquivo (por exemplo: meu.documento.especial.txt) } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 frnd Postado Setembro 6, 2007 Autor Denunciar Share Postado Setembro 6, 2007 (editado) Hum.. deixa eu ver se eu entendi. Eu tenho uma string 'documento.html' e faço com que ele mostra somente os '.', por isso uso o explode. Daí uso o count para contar a quantidade de pontos da string? É isso?Se eu quiser fazer com que se ele achar 2 pontos ele pegar o último ponto e ler oque tem depois dele(no caso seria pegar a extensao)? Editado Setembro 6, 2007 por frnd Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 6, 2007 Denunciar Share Postado Setembro 6, 2007 Tenha um pouco de boa vontade, OLHA só o que eu escrevi.PONTO é onde será dividida a string, ele mesmo vai desaparecer$nome = "doumento.html"; $dividir = explode('.',$nome); /* $dividir[0] vai ser o documento $dividir[1] vai ser o html */Agora olha o exemplo, eu já coloquei ATÉ o que vai retornar, você vê algum PONTO no retorno? Depois do explode o que for "explodido" desaparece e a string é repartida no ponto da "explosão"... ou seja no exemplo acima depois de usar o explode no documento.html só vai existir DOIS ítens no array, 1->documento, 2->html... NADA de PONTO... que só serviu para dizer onde eu queria...Agora como pegar o último ítem do array, que vai ser a extensão? Vejamos, o count SEMPRE vai retornar um número que é maior +1 em relação ao índice do array, ou seja, no exemplo acima o array tem os índices 0 e 1, só que o count retorna 2, então o último ítem do array sempre vai ser o que o count retornar -1... (experimente raciocinar, é bom...), mas só pra você ver, se o usuário quiser te sacanear ele vai mandar um arquivo chamado m.e.u.a.r.q.u.i.v.o.h.t.m.l, e ai essa verificação que você quer fazer também não vai funcionar, porque o último ítem do array vai ser o l... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
frnd
Olá,
Como faço para pegar a extensão do arquivo que foi feito o upload?
[]s
Link para o comentário
Compartilhar em outros sites
28 respostass a esta questão
Posts Recomendados
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.