Upload files in PHP

Asked

Viewed 59 times

0

I am not able to upload PPTX files, others go up normally. The files are sent via ajax. The error happens when moving the file to the folder !

var form = $('#fileUploadForm'+idbtn[1])[0];
// Create an FormData object
var data = new FormData(form);
// If you want to add an extra field for the FormData
data.append("CustomField", "This is some extra data, testing");
// disabled the submit button
$(this).hide();

$.ajax({
    type: "POST",
    enctype: 'multipart/form-data',
    url: "relatorios/upload-resultados.php",
    data: data,
    processData: false,
    contentType: false,
    cache: false
});

PHP

<?php
    include("../template/functions/php/class-connection-bank.php");
    #Funções de tratamento do Sistema
    include("../template/functions/php/functions.php");
    include("../template/functions/php/consultas.php");

    #Diretoria e ano do arquivo que será enviado
    $abaano = strtolower($_POST["anoaba"]);
    #Mês referente ao arquivo que vai ser enviado
    $mes    = strtolower($_POST["mesnome"]);

    #Quebra o nome do arquivo para pegar a extensão do mesmo
    $temporary      = explode(".", $_FILES["file"]["name"]);
    #Pega a extensão do arquivo
    $file_extension = end($temporary);
    #Quebrando a variável para montagem do nome
    $config = explode("-",$abaano);
    #Montando o nome do arquivo conforme precisamos
    $nome_arquivo = $config[0]."-".tiracento($mes)."-".$config[1].".".$file_extension;


    $diretoria = $config[0];
    $mes = tiracento($mes);
    $ano = $config[1];
    $endereco = "downloads/resultados/";

    #Inserção no banco
    $pdo = conecta();
    $sqlinsert  = "INSERT INTO `relatorios` (diretoria, mes, ano, endereco) VALUES (:diretoria, :mes, :ano, :endereco);";
    $queryinsert= $pdo->prepare($sqlinsert);
    $queryinsert->bindParam(':diretoria',$diretoria);
    $queryinsert->bindParam(':mes', $mes);
    $queryinsert->bindParam(':ano', $ano);
    $queryinsert->bindParam(':endereco', $endereco);
    $queryinsert->execute();

    if($queryinsert){        
        #Local onde o arquivo será armazenado
        $target_dir = "downloads/resultados/";
        #Nome completo do arquivo com o diretório
        $target_file = $target_dir . $nome_arquivo;
        #Variável que indica se o upload foi ou não realizado
        $uploadOk = 1;
        #
        $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

        $retorno = array();

        // Check if image file is a actual image or fake image
        if(isset($_POST["file"])) {
            $check = $_FILES["file"]["tmp_name"];
            if($check !== false) {
                echo "File is an image - " . $check["mime"] . ".";
                $uploadOk = 1;
            } else {
                echo "File is not an image.";
                $uploadOk = 0;
            }
        }
        #verifica se o arquivo existe no diretório
        if (file_exists($target_file)) {
            echo "Desculpe, o arquivo já existe.";
            $uploadOk = 0;
        }

        #Verifica o tamanho do arquivo
        if ($_FILES["file"]["size"] > 5000000) {
            echo "Desculpe, o arquivo é muito grande.";
            $uploadOk = 0;
        }

        #Verifica os se o arquivo é permitido
        if($imageFileType != "pptx" && $imageFileType != "ppt" && $imageFileType != "pdf"
        && $imageFileType != "xls" && $imageFileType != "xlsx" ) {
            echo "Apenas arquivos PPT, PPTX, PDF, XLS & XLSX são permitidos.";
            $uploadOk = 0;
        }
        #Verifica se passou pelas validações
        if ($uploadOk == 0) {
            echo "Seu arquivo não foi enviado.";
        } else {
            #Se tudo estiver ok, tenta fazer o upload do arquivo
            if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
                echo "O arquivo ". basename( $_FILES["file"]["name"]). " foi renomeado para ".$nome_arquivo." e enviado com sucesso.";
            } else {
                echo "Desculpe, houve um erro ao enviar seu arquivo.";
            }
        }
    }else{
        echo "error";
    }
?>
  • 1

    And what the mistake ?

  • I was able to fix it. The problem was on the server, which limited the file size.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.