Voorbereidingen

Introductie

In deze tutorial ga ik jullie leren hoe je bestanden kunt verwerken in een MySQL database. We gaan onder andere bespreken hoe je een bestand upload naar een MySQl database en het bestand vervolgens via een HTTP interface er weer uit kunt halen.

Ik moet er wel even bij vermelden dat dit behoorlijk wat van je database vraagt. Hiertoe kun je in plaats van LONGBLOB in de query beter een kleiner gegevenstype kiezen (zoals TINYBLOB). In de meeste gevallen is het zelfs niet wenselijk om gebruik te maken van InnoDB engine om bestanden op te slaan. Gebruik dan de conventionele HTTP upload methode om een bestand te uploaden (http://nl3.php.net/manual/nl/features.file-upload.php).

Benodigdheden

Een server met PHP interpreter en ondersteuning voor MySQL (die tevens HTTP uploads toestaat)
Een MySQL database met de benodigde rechten

Inhoud

Een MySQL database voorbereiden
Het uploadformulier opbouwen
Het uploadscript
De downloads-pagina
Het downloadscript

Een MySQL database voorbereiden

Alvorens we kunnen beginnen met het schrijven van het werkelijke script, zullen we eerst een database moeten voorbereiden. Meld je hiertoe aan op je MySQL server en maak een database aan, genaamd "FILES". Na het aanmaken van de database kunnen we de InnoDB tabel gaan genereren waarin we de bestanden gaan verwerken. Voor de ongeduldigen onder ons heb ik voor deze handelingen een script geschreven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php

if(!empty($_POST))
{


$host=$_POST['host'];
$username=$_POST['username'];
$pass=$_POST['pass'];

mysql_connect($host,$username,$pass) or die(mysql_error());

if(!mysql_select_db($_POST['database']))
mysql_query("CREATE DATABASE ".$_POST['database'].";") or die(mysql_error());
mysql_select_db($_POST['database']) or die(mysql_error());

mysql_query("CREATE TABLE FILES (
FILE_ID INT AUTO_INCREMENT PRIMARY KEY,
FILENAME TEXT,
FILETYPE TEXT,
FILESIZE INT,
CONTENT LONGBLOB,
DATUM DATETIME
);"
) or die(mysql_error());

echo("Database succesvol geprepareerd");

mysql_close();

}


?>

<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
<table>
<tr>
<td>Hostnaam</td>
<td><input type="text" name="host"></td>
</tr>
<tr>
<td>Gebruikersnaam</td>
<td><input type="text" name="username"></</td>
</tr>
<tr>
<td>Wachtwoord</td>
<td><input type="password" name="pass"></</td>
</tr>
<tr>
<td>Database</td>
<td><input type="text" name="database"></</td>
</tr>
<tr>
<td><input type="submit" value="Genereren"></td>
</tr>
</table>
</form>


Verwerk deze code in een .php bestand en sla het bestand op alvorens door te gaan met de volgende stap.

Deze regels code tussen if(!empty($_POST)){} worden uitgevoerd als er een zogenaamde POST array naar de server is verstuurd (dus als je de submit-knop hebt ingedrukt). De eerste vier regels zijn om een verbinding tot stand te brengen met de database. In de volgende regels controleren we of de gespecificeerde database bestaat. Indien dat niet zo is, zal deze worden aangemaakt. Vervolgens wordt met deze database verbinding gemaakt. Het eerste veld van de tabel is FILE_ID (de primaire sleutel). Deze is vereist om later snel bij je gegevens te kunnen komen. Dit nummer wordt automatisch door de database toegekend, dus we hoeven de primaire sleutel niet zelf toe te voegen. Verder is er een veld genaamd CONTENT (van het gegevenstype LONGBLOB). Het type BLOB verschilt van overige velden omdat de data in dit veld geen karakterset heeft, maar wordt behandelt als een binaire string (uitermate geschikt voor bestanden dus). LONGBLOB is geschikt voor opslag tot maximaal 4294967295 (zo'n 4 GB), dus de enige beperking is het maximum dat je server heeft voor HTTP uploads. De overige velden spreken voor zich, lijkt mij.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Voorbereidingen
  2. Het downloadscript
  3. Het uploadformulier opbouwen
  4. Einde
  5. Het uploadscript
  6. De downloads-pagina

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.