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.
CREATE DATABASE phpimg;
CREATE TABLE arquivo (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
arquivo VARCHAR(100) NOT NULL,
dt DATETIME NOT NULL
);
<?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>
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