Upload PHP e Mysql

Upload de arquivos via PHP e Mysql
Voltar

Pré-requisitos

Necessário ter o XAMPP executando, criar diretório no htdocs para armazenar os códigos. Após, crie, neste diretório, a pasta uploads, onde os arquivos de upload ficarão armazenados. Em seguida, execute o arquivo SQL no Phpmyadmin. Por fim, execute os códigos abaixo. Conforme tamanho do arquivo em upload, em alguns casos, será necessária realocação de maior espaço no banco de dados.


banco.sql


CREATE DATABASE phpimg;
CREATE TABLE arquivo (
    id INTEGER AUTO_INCREMENT PRIMARY KEY,
    arquivo VARCHAR(100) NOT NULL,
    dt DATETIME NOT NULL
);

upload.php


<?php
    $db = new PDO('mysql:host=localhost;dbname=phpimg;charset=utf8','root','');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if(!empty($_FILES['arquivo'])) {
        $ext = pathinfo($_FILES['arquivo']['name'],PATHINFO_EXTENSION);
        $nNome = uniqid($_FILES['arquivo']['name']).".".$ext;
        $dir = "uploads/";
        move_uploaded_file($_FILES['arquivo']['tmp_name'],$dir.$nNome);

        $r = $db->prepare("INSERT INTO arquivo(arquivo,dt) VALUES (?,now())");
        $r->execute(array($nNome));
    }
?>

<form action="upload.php"  method="post" enctype="multipart/form-data">
    <input type="file" name="arquivo">
    <input type="submit" value="Enviar">
</form>

Upload sem conexão com BD

Para uploads sem necessidade de gravar em base de dados, segue outro exemplo de código, upload.php, envolvendo a mesma arquitetura de diretórios.


<?php
    $name = $_FILES['arquivo']['name'];
    $size = $_FILES['arquivo']['size'];
    $type = $_FILES['arquivo']['type'];
    $temp = $_FILES['arquivo']['tmp_name'];
    $ext = pathinfo($name,PATHINFO_EXTENSION);

    if ((!empty($name)) && (!empty($name))) {
    	$nNome = uniqid($name).'.'.$ext;
    	$dir = 'uploads/'.$nNome;
    	if (move_uploaded_file($temp,$dir)) {echo 'Upload  concluido!';}
    	else {echo 'Erro no upload.';}
    }

?>
<form action="upload.php"  method="post" enctype="multipart/form-data">
    <p><input type="file" name="arquivo"></p>
    <p><input type="submit" value="Enviar"></p>
</form>

Elaborado por Mateus Schwede
ubsocial.github.io