Jump to content
juninhogpe

Upload de arquivo de áudio

Recommended Posts

Boa tarde.

Estou com problemas ao subir arquivos no formato MP3 com o código abaixo. Sempre usei ele e hoje apenas aparece erro.

Abaixo o código:

 

$titulo = $_POST['titulo'];                     
                    if ($titulo != ""){
                        $texto   = $_POST['texto'];
                        $padre   = $_POST['padre'];
                        $data    = date("Y-m-d", strtotime($_POST['data']));
                        $audio   = isset($_FILES["audio"]) ? $_FILES["audio"] : FALSE;
                        $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

                        if($arquivo && $audio){

                                if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $arquivo["type"])){
                                    echo utf8_encode("<script> alert ('Arquivo em formato inválido! A imagem deve ser jpg, jpeg,
                                                      bmp, gif ou png. Cadastro não foi realizado.');</script>");
                                }

                                if(!preg_match("/^audio\/(mp3|MP3)$/", $audio["type"])){
                                    echo utf8_encode("<script> alert ('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>");
                                }

                                else{
                                    preg_match   ("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
                                    $dd          = date("msdYiH");
                                    $imagem_nome = $dd. "." . $ext[1];
                                    $imagem_dir  = "../am/" . $imagem_nome;
                                    $up          = move_uploaded_file($arquivo["tmp_name"], $imagem_dir);

                                    preg_match   ("/\.(mp3|MP3|wav|wma){1}$/i", $audio["name"], $ext);
                                    $dd          = date("msdYiH");
                                    $audio_nome = $dd. "." . $ext[1];
                                    $audio_dir  = "../am/" . $audio_nome;
                                    $up_audio   = move_uploaded_file($audio["tmp_name"], $audio_dir);

                                    if ($up){
                                        $sql = utf8_decode("INSERT INTO palavra (titulo, foto, data, audio, texto, padre) 
                                        VALUES ('$titulo','$imagem_nome', '$data','$audio_nome', '$texto', '$padre')");
                                    }
                                }
                        }else echo utf8_encode("<script> alert ('Erro no upload.');</script>");


                        if($conn->query($sql) === TRUE){
                            echo utf8_encode("<script> alert (\"Cadastro realizado com sucesso.\");</script>");
                            echo utf8_encode('<script>window.location="palavra.php";</script>');
                        }
                        else{
                            echo "Erro: " . $sql . "<br />" .$conn->error;
                            echo utf8_encode('<script>window.location="palavra.php";</script>');
                        }
                    }   

 

O que estou fazendo de errado?

Obrigado.

Share this post


Link to post
Share on other sites

Provavelmente o erro está ocorrendo porque

você está armazenando os dados vindos do

formulário sem antes realizar qualquer

tipo de "validação" nos mesmos...

 

Tente fazer assim:

<?php

if ($_POST) {
	if (
		$_POST['titulo'] !== "" &&
		$_POST['texto'] !== "" &&
		$_POST['padre'] !== "" &&
		$_POST['data'] !== ""
	) {
		$titulo = $_POST['titulo'];
		$texto = $_POST['texto'];
		$padre = $_POST['padre'];
		$data = date("Y-m-d", strtotime($_POST['data']));
		$audio = ($_FILES['audio']['name'] !== "") ? $_FILES['audio'] : FALSE;
		$arquivo = ($_FILES['foto']['name'] !== "") ? $_FILES['foto'] : FALSE;

		if ($arquivo && $audio) {
			if (!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $arquivo["type"])) {
				echo utf8_encode("<script> alert ('Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Cadastro não foi realizado.');</script>");
			}

			if (!preg_match("/^audio\/(mp3|MP3)$/", $audio["type"])) {
				echo utf8_encode("<script> alert ('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>");
			} else {
				preg_match ("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
				$dd = date("msdYiH");
				$imagem_nome = $dd. "." . $ext[1];
				$imagem_dir = "../am/" . $imagem_nome;

				preg_match ("/\.(mp3|MP3|wav|wma){1}$/i", $audio["name"], $ext);
				$dd = date("msdYiH");
				$audio_nome = $dd. "." . $ext[1];
				$audio_dir = "../am/" . $audio_nome;

				if (
					@move_uploaded_file($arquivo["tmp_name"], $imagem_dir) &&
					@move_uploaded_file($audio["tmp_name"], $audio_dir)
				) {
					$sql = utf8_decode("INSERT INTO palavra (titulo, foto, data, audio, texto, padre) VALUES ('$titulo','$imagem_nome','$data','$audio_nome', '$texto', '$padre')");

					if ($conn->query($sql) === TRUE) {
						echo utf8_encode("<script> alert (\"Cadastro realizado com sucesso.\");</script>");
					} else {
						echo "Erro: " . $sql . "<br />" .$conn->error;
					}
				} else {
					echo utf8_encode("<script> alert (\"Falha ao enviar arquivo.\");</script>");
				}
			}
		} else {
			echo utf8_encode("<script> alert ('Selecione os arquivos.');</script>");
		}
	} else {
		echo utf8_encode("<script> alert (\"Cadastro realizado com sucesso.\");</script>");
	}

	echo utf8_encode('<script>window.location="palavra.php";</script>');
}

?>

 

Alias, organizei algumas coisas em teu

código também, basta testar.

Share this post


Link to post
Share on other sites

Tente assim:

 

CÓDIGO:

<?php

if ($_POST) {
	if (
		$_POST['titulo'] !== "" &&
		$_POST['texto'] !== "" &&
		$_POST['padre'] !== "" &&
		$_POST['data'] !== "" &&
		$_FILES['audio']['name'] !== "" &&
		$_FILES['foto']['name'] !== ""
	) {
		$titulo = $_POST['titulo'];
		$texto = $_POST['texto'];
		$padre = $_POST['padre'];
		$audio = $_FILES['audio'];
		$imagem = $_FILES['foto'];
		$data = date('Y-m-d', strtotime($_POST['data']));

		if (preg_match("/^image\/(pjpeg|jpeg|png|jpg|gif|bmp)$/", $imagem['type'])) {
			if (preg_match("/^audio\/(mp3|MP3)$/", $audio['type'])) {
				preg_match ("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $imagem['name'], $ext);
				$dd = date('msdYiH');
				$imagem_nome = $dd. "." . $ext[1];
				$imagem_dir = "../am/" . $imagem_nome;

				preg_match ("/\.(mp3|MP3|wav|wma){1}$/i", $audio['name'], $ext);
				$dd = date('msdYiH');
				$audio_nome = $dd. "." . $ext[1];
				$audio_dir = "../am/" . $audio_nome;

				if (
					@move_uploaded_file($imagem["tmp_name"], $imagem_dir) &&
					@move_uploaded_file($audio["tmp_name"], $audio_dir)
				) {
					$sql = utf8_decode("INSERT INTO palavra (titulo, foto, data, audio, texto, padre) VALUES ('$titulo','$imagem_nome','$data','$audio_nome', '$texto', '$padre')");

					if ($conn->query($sql) === TRUE) {
						echo "<script>alert(\"Cadastro realizado com sucesso.\");</script>";
					} else {
						echo "Erro: " . $sql . "<br />" .$conn->error;
					}
				} else {
					echo "<script>alert(\"Falha ao enviar arquivo.\");</script>";
				}
			} else {
				echo "<script>alert('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>";
			}
		} else {
			echo "<script>alert(\"Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Cadastro não foi realizado.\");</script>";
		}
	} else {
		echo "<script>alert(\"Preencha todos os campos.\");</script>";
	}

	echo "<script>window.location=\"palavra.php\";</script>";
}

?>

 

Share this post


Link to post
Share on other sites

@ShadowDLL,  bom dia.

 

Com esse último código, ocorre o erro de arquivo de áudio no formato inválido, mas dessa vez nem sobe o arquivo.

 

O arquivo está no formato mp3  no código anterior apesar do erro o arquivo faz o upload.

 

Se eu retirar o trecho:

 

if(!preg_match("/^audio\/(mp3|MP3)$/", $audio["type"])){
	echo utf8_encode("<script> alert ('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>");

 

O arquivo sobe e não apresenta a mensagem de erro, mas também fico sem validar ele não é isso?

 

Obrigado desde já.

Share this post


Link to post
Share on other sites

Poderia me informar o tamanho do áudio

que está tentando subir?

 

Ambos os códigos aqui estão funcionando,

então acredito eu que o tamanho do áudio

que você está tentando subir passa o limite.

 

Tente fazer o seguinte, abra o arquivo

php.ini, e altere as linhas de acordo com

os valores abaixo:

memory_limit = 128M
max_execution_time = 300
upload_max_filesize = 20M
post_max_size = 24M

 

TESTE:

<?php

if ($_POST) {
	if (
		$_POST['titulo'] !== "" &&
		$_POST['texto'] !== "" &&
		$_POST['padre'] !== "" &&
		$_POST['data'] !== "" &&
		$_FILES['audio']['name'] !== "" &&
		$_FILES['foto']['name'] !== ""
	) {
		$titulo = $_POST['titulo'];
		$texto = $_POST['texto'];
		$padre = $_POST['padre'];
		$audio = $_FILES['audio'];
		$imagem = $_FILES['foto'];
		$data = date('Y-m-d', strtotime($_POST['data']));

		if (preg_match("/^image\/(pjpeg|jpeg|png|jpg|gif|bmp)$/", $imagem['type'])) {
			if (preg_match("/^audio\/(mp3|MP3)$/", $audio['type'])) {
				preg_match ("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $imagem['name'], $ext);
				$dd = date('msdYiH');
				$imagem_nome = $dd. "." . $ext[1];
				$imagem_dir = "../am/" . $imagem_nome;

				preg_match ("/\.(mp3|MP3|wav|wma){1}$/i", $audio['name'], $ext);
				$dd = date('msdYiH');
				$audio_nome = $dd. "." . $ext[1];
				$audio_dir = "../am/" . $audio_nome;

				if (
					@move_uploaded_file($imagem["tmp_name"], $imagem_dir) &&
					@move_uploaded_file($audio["tmp_name"], $audio_dir)
				) {
					$sql = utf8_decode("INSERT INTO palavra (titulo, foto, data, audio, texto, padre) VALUES ('$titulo','$imagem_nome','$data','$audio_nome', '$texto', '$padre')");

					if ($conn->query($sql) === TRUE) {
						echo "<script>alert(\"Cadastro realizado com sucesso.\");</script>";
					} else {
						echo "Erro: " . $sql . "<br />" .$conn->error;
					}
				} else {
					echo "<script>alert(\"Falha ao enviar arquivo.\");</script>";
				}
			} else {
				echo "<script>alert('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>";
			}
		} else {
			echo "<script>alert(\"Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Cadastro não foi realizado.\");</script>";
		}
	} else {
		echo "<script>alert(\"Preencha todos os campos.\");</script>";
	}

	echo "<script>window.location=\"palavra.php\";</script>";
}

?>

<form method="post" enctype="multipart/form-data">
	<span>Texto</span><br>
	<input type="text" name="texto"><br>

	<span>Titulo</span><br>
	<input type="text" name="titulo"><br>

	<span>Padre</span><br>
	<input type="text" name="padre"><br>

	<span>Data</span><br>
	<input type="text" name="data" value="20/03/2020"><br>

	<span>Audio</span><br>
	<input type="file" name="audio"><br>

	<span>Foto</span><br>
	<input type="file" name="foto"><br><br>

	<button type="submit">Enviar</button>
</form>

 

Share this post


Link to post
Share on other sites

@ShadowDLL boa tarde.

 

Me desculpa a demora no retorno.

 

Infelizmente ainda não deu certo, criei o arquivo ".php.ini", alterei o código para o seu último exemplo e mesmo assim aparece como arquivo no formato inválido.

 

E como eu disse anteriormente é um arquivo que eu mesmo já havia conseguido fazer upload com esse código.

 

Desde já agradeço pela ajuda.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By babylon
      Ola amigos,
       
      Estava querendo criar algo para meu site, um botao igual do site abaixo para calcular formas de pagamento "ver formas de pagamento":
       
      https://www.chipart.com.br/pc-gamer-level-one-black-amd-3400g
       
      Segue imagem em anexo.
       
      Alguem poderia me ajudar se tem algum script algo pronto ou que ajude para abrir pop up modal?
       
      Obrigado a todos.
       
       

    • By srs1999_
      Tópico
       
      Site em Código
      Sobre desenvolver sites sem o wordpress que ja tá tudo ali feito que seja um site dinâmico ou seja com banco de dados , APIs de pagamento, Painel para o usuário ,  além de todas  as funções que tem no wordpress e você teria propriedade pra explicar sobre detalhes mais técnicos da produção onde no wordpress só quem entende de progrqmação explicaria algum detalhe técnico 
      Então usando basicamente : 
      FRONT END 
      HTML 
       CSS 
      JAVASCRIPT 
      ALGUMA DE BACKEND COMO PHP E BANCO DE DADOS
      Pode se criar sites/sistemas tão bons ou melhores que no wordpress
       
      Fato : o proprio wordpress é feito em php e ate o proprio facebook tbm em php
      Fato 2 :  cerca de 70% dos sites são feitos em Wordpress
       
      Acho esse lance de procurar o caminho mais fácil limita muito a pessoa por exemplo é facil editar imagens no paint bem intuitivo , agora para editar no photoshop com muitas outras possibilidades  acaba sendo importante ir explorando essa elaboração mais difícil  com um mesmo objetivo. No caso do exemplo ( editar imagens )  
       
      Reflexão:
      Vale a pena se dedicar a trabalhar com a ferramenta Wordpress apenas por ser um meio rápido de ganhar dinheiro ?
      Ou trabalhar sem wordpress  usando tudo que exigido pra criar coisas originais mais que não seria tão rápido a produção. Mas creio que além dos sites feitos também geraria a possibildade de vender o sistema web criado para o cliente personalizar .
       
      Você Desenvolveria de que forma :
       Wordpress apenas ?
       
      Conhecer programação pra trabalhar 
      com  Wordpress ?
       
      Produzir tudo só com programação totalmente dinâmico sem  Wordpress?
    • By violin101
      Caros amigos
       
      saudações...
       
      Peço desculpa, se postei minha dúvida em local errado.
       
      Tenho um formulário onde valido todos os campos e após clicar no BUTTON para adicionar, tenho uma função que muda o TITLE e deixa desabilitado.
       
      O problema é o seguinte:
      - caso algum campo fica em branco, após validar o formulário e mudar o BUTTON, não consigo depois de preenchido HABILITAR novamente o button.
       
      Observação:
      1) após preencher o campo que ficou em branco, como faço para HABILITAR o button novamente e mudar o title do button ?
       
       
      na VIEW está assim:
      <form action="<?php echo current_url(); ?>" id="frmEstoque" method="post" onsubmit="this.btn_adc.disabled=true;" > <div class="card-body"> <div class="row"> <!---Todos os campos do Formulário---> </div> </div> <div class="card-footer" style="text-align:center;"> <input type="hidden" id="idCli" name="idCli" value="<?php echo $cliente->idClientes; ?>" /> <a href="<?php echo base_url() ?>admin/estoque" id="" class="btn btn-danger"><i class="fa fa-undo"></i> Voltar</a> &nbsp; <button type="submit" id="btn_adc" name="btn_adc" class="btn btn-primary">Adicionar</button> </div> </form>  
      na JavaScript está assim:
      <script> //Função para Mudar o VALUE do Button Adicionar Veículo document.getElementById("btn_adc").addEventListener("click",function(){ this.innerHTML = this.value++ || 'Aguarde...'; },false); </script> /* Observação: 1) como removo a função acima, após validar o formulário e esse encontrar algum campo vazio. 2) após preencher o campo que ficou em branco, HABILITAR o button novamente. */ <script type="text/javascript"> $(document).ready(function(){ //Função para Validar Formulário $('#frmEstoque').validate({ rules :{ etq_categcars:{ required: true}, etq_destaq:{ required: true}, etq_status:{ required: true} }, messages:{ etq_categcars :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_destaq :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_status :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'} }, errorClass: "help-inline", errorElement: "span", highlight:function(element, errorClass, validClass) { $(element).parents('.form-group').addClass('error'); }, unhighlight: function(element, errorClass, validClass) { $(element).parents('.form-group').removeClass('error'); $(element).parents('.form-group').addClass('success'); } }); //Status dos Botões ADICIONAR - iniciar como desabilitado. document.getElementById("btn_adc").disabled = true; }); function statusButton(){ //valida conteudo do input if ($("input[name=etq_vlrcpr]").val() != 0 && $("input[name=etq_vlrvda]").val() != 0) { //habilita o botão document.getElementById("btn_adc").disabled = false; } else { //desabilita o botão se o conteúdo do input ficar em branco document.getElementById("btn_adc").disabled = true; } } </script>  
      Grato,
       
      Cesar
       
       
       
       
    • By mateus.andriollo
      Olá,
      Gostaria de saber se alguem pode me ajudar.
      Meu PHP esta na pasta public_html em um CPanel, quero saber se é possível armazenar em pasta fora da pasta  pública, por segurança mesmo...
      Faço isso em ASP, ai chamo a imagem por um fso, funciona mas queria saber se tem como no PHP.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.