A feladat: PHP-ben megírni egy szkriptet, amely egy fájl tölt fel MySQL-be, illetve egy másik szkript le is tölti azt.
MySQL-ben kell egy adattábla a fájlok tárolására.
CREATE TABLE upload (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
size INT NOT NULL,
content LONGBLOB NOT NULL,
PRIMARY KEY(id)
);
Fájl feltöltése MySQL táblába PHP-vel
// Fájl adatainak megadása és lekérdezése
$FileName = 'SomeFile.txt';
$filesize = filesize($FileName);
$filetype = mime_content_type($FileName);
$fp = fopen($FileName, 'r');
$filecontent = fread($fp, filesize($FileName));
$filecontent = addslashes($filecontent);
fclose($fp);
// Csatlakozás az adatbázishoz és feltöltés
$conn = connect('localhost', 'mydatabase', 'password');
mysql_select_db('mydatabase');
$sql = "INSERT INTO upload (name, type, size, content) VALUES ('$filename', '$filetype', $filesize, '$filecontent')";
$success = mysql_query($sql, $conn);
if (!$success)
echo mysql_error()."<br/>\n SQL = $sql";
Fájl letöltése MySQL táblából PHP-vel
Arra ügyelni kell, hogy az alábbi szkript részlet futása előtt ne legyen semmiféle kiírás (echo).
// Feltételezzük, hogy a letöltendő fájl ID-je az URL-ben érkezett pl.: http://localhost/download.php?id=3
$ID = $_GET["id"];
// Csatlakozás az adatbázishoz és letöltés
$conn = connect('localhost', 'mydatabase', 'password');
mysql_select_db('mydatabase');
$sql = "SELECT name, type, size, content FROM upload WHERE id = $ID";
$result = mysql_query($sql, $conn) or die(mysql_error()."<br/>\n SQL = $sql");
list($name, $type, $size, $content) = mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;
exit;
A feladatról egy részletesebb leírást angolul itt olvashatsz.