Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E ai pessoal bom dia.
Estou me deparando com um pequeno problema, tenho um gerenciador de uploads que no php.ini está configurado para aceitar até 100MB.
No entanto se o Usuário colocar um arquivo maior não retorna erro algum, estava querendo validar em javascript mais não estou conseguindo.
pesquisei bastante só encontrei uma forma usando o activex mais não funciona alguem tem uma ideia pra mim XD ?
>
é impossível validar com javascript, pois js não tem esse tipo de acesso à máquina do usuário.
É realmente você tem razão, começei a tentar validar do lado do servidor mais tbm não to conseguindo
<?php
session_start('user');
$user=$_SESSION['user'];
if ($user['tipo_user']<>1)
{
// mensagens que aparecem caso o usuário tente acessar pela url paginas não permitidas.
header("Location:../../error.php");
echo "<script language='javascript'>alert('Ação não permitida'); window.location.href = '../../index.php'</script>";
//header('Content-Type: text/html; charset=ISO-8859-1');
}
?>
<?php
//sleep(0);
include "../../conexao.php"; // conexão com o bd
@$arquivo = $_FILES['upload_tamanho'];
//------------------------------------ arquivo ------------------------------------------------
// Se o arquivo estiver sido selecionado
if (@!empty($arquivo['name'])) {
// Tamanho máximo do arquivo em bytes
$tamanho = 2000;
// Verifica se o tamanho do arquivo é maior que o tamanho permitido
if($arquivo['size'] > $tamanho) {
echo "<script language='javascript'>alert('o arquivo deve ter no máximo ".$tamanho." bytes); window.location.href = 'material.php'</script>";
}
}
//-------------------------- Update de arquivo --------------------------------
@$nome = $_FILES['upload_tamanho']['name'];
@$titulo = $_POST['upload_titulo'];
@$cod_tur_prof_fk = $_POST['cod_tur_prof_fk'];
@$cod_turma_fk = $_POST['cod_turma_fk'];
@$conteudo = $_FILES['upload_tamanho']['name'];
@$tipo = $_FILES['upload_tamanho']['type'];
@$tmp = $_FILES['upload_tamanho']['tmp_name'];
@$destino = "../../upload/". $conteudo;
if(isset($_POST['adicionar'])){
if(@$_GET['funcao'] == "inserir"){
$sqlbusca = mysql_query("SELECT * FROM upload WHERE upload_nome = '$nome'");
$verificanome = mysql_num_rows($sqlbusca);
//condição que ira verificar se o material já está cadastrado
if($verificanome == 0){
if(move_uploaded_file($tmp, $destino)){
$cadastro = mysql_query("INSERT INTO upload VALUES (0,'$cod_tur_prof_fk','$cod_turma_fk','$nome','$titulo','$conteudo','$tipo')") or die (mysql_error());
echo "<script language='javascript'>alert('Arquivo gravado com sucesso'); window.location.href = 'material.php'</script>";
}else{
echo "<script language='javascript'>alert('Erro: não foi possivel gravar o arquivo'); window.location.href = 'material.php'</script>";
}
}else{
echo "<script language='javascript'>alert('Erro: altere o nome do arquivo'); window.location.href = 'material.php'</script>";
}
}
}
//-------------------------------------------------
//função responsavel por excluir, o unlink é responsavel por pegar o arquivo armazenado na pasta e exclui-lo junto com o registro
else if($_GET['funcao'] == "excluir"){
$pega_id = $_GET['upload_id'];
$pega_nome = $_GET['upload_nome'];
unlink("../../upload/".$pega_nome);
print $pega_id . $pega_nome;
$sql_del = mysql_query("DELETE FROM upload WHERE upload_id= '$pega_id'");
echo "<script language='javascript'>alert('material removido com sucesso'); window.location.href = 'material.php'</script>";
//}else {
//echo "<script language='javascript'>alert('Não foi possível remover o material!!!')</script>";
}
?>
Alguma idéia do que pode estar errado ?
Tem esse post que faz a validação tanto de tamanho, quanto da extensão. No final o arquivo de upload é enviado por e-mail, tira essa última funcionalidade que vai funcionar bem para você. Se precisar de ajuda para tirar a parte do e-mail, pode falar comigo que eu te ajudo.
Veja se isso te ajuda.
Link não autorizado removido
>
é impossível validar com javascript, pois js não tem esse tipo de acesso à máquina do usuário.
Logo logo isso não será mais realidade: http://www.w3.org/TR/FileAPI/#dfn-Blob :seta: http://www.html5rocks.com/en/tutorials/file/dndfiles/
>
Tem esse post que faz a validação tanto de tamanho, quanto da extensão. No final o arquivo de upload é enviado por e-mail, tira essa última funcionalidade que vai funcionar bem para você. Se precisar de ajuda para tirar a parte do e-mail, pode falar comigo que eu te ajudo.
Veja se isso te ajuda.
Link não autorizado removido
não to conseguindo fazer funcionar tbm !!!
na logica q estava seguindo a parte que verifica o tamanho seria essa
@$arquivo = $_FILES['upload_tamanho'];
//------------------------------------ arquivo ------------------------------------------------
// Se o arquivo estiver sido selecionado
if (@!empty($arquivo['name'])) {
// Tamanho máximo do arquivo em bytes
$tamanho = 2000;
// Verifica se o tamanho do arquivo é maior que o tamanho permitido
if($arquivo['size'] > $tamanho) {
echo "<script language='javascript'>alert('o arquivo deve ter no máximo ".$tamanho." bytes); window.location.href = 'material.php'</script>";
}
}
no entanto o php simplesmente ignora, não sei porque ... puxa vida o que será q ta faltando...
Tem certeza que o problema não é do seu php?
Você já testou local e online e dá o mesmo problema?
>
Tem certeza que o problema não é do seu php?
Você já testou local e online e dá o mesmo problema?
tava sendo um problema com os if, else XD.
Dei uma alterada no codigo é ficou assim.
if(isset($_POST['adicionar'])){
if(@$_GET['funcao'] == "inserir"){
$sqlbusca = mysql_query("SELECT * FROM upload WHERE upload_nome = '$nome'");
$verificanome = mysql_num_rows($sqlbusca);
//condição que ira verificar se o material já está cadastrado
if($verificanome == 0){
if(move_uploaded_file($tmp, $destino)){
$cadastro = mysql_query("INSERT INTO upload VALUES (0,'$cod_tur_prof_fk','$cod_turma_fk','$nome','$titulo','$conteudo','$tipo')") or die (mysql_error());
echo "<script language='javascript'>alert('Arquivo gravado com sucesso'); window.location.href = 'material.php'</script>";
}
}else{
echo "<script language='javascript'>alert('Erro: Esse arquivo já existe! altere o nome e tente novamente'); window.location.href = 'material.php'</script>";
}
}
}else{
echo "<script language='javascript'>alert('Erro: Tamanho do arquivo ultrapassa o limite permitido'); window.location.href = 'material.php'</script>";
}
Não é uma grande solução mais já resolve um pouco o meu problema.
é impossível validar com javascript, pois js não tem esse tipo de acesso à máquina do usuário.