将不同的 MIME 类型上载到具有一个表的数据库


uploading different MIME types to a DataBase with one table

我正在做一个项目,用户将上传几个具有不同MIME类型的文件,我想将文件保存到数据库(Mysql with InnoDB engeen)。现在这些是我的问题:
1/我应该为每个MIME类型创建多个表,还是为每个类型创建不同的行?
2/我在 mysql 中的行类型中测试了字段类型的 BLOB,但似乎数据库存在问题!!
--要么我尝试了MEDIUM BLOB和LONG BLOB--
3/如果我必须将每个 MIME 类型保存在不同的行或表中,哪种类型适用于此 iletype:
a/pdf b/jpeg c/png d/gif e/video/mp4 f/application/word

这是我刚刚测试的一个小例子

表:文件

id(主键,自动递增)

文件名 (varchar 255)

类型 (瓦尔查尔 255)

文件 (大斑点)

编码:utf8_unicode_ci

<?php

$hostname = 'localhost';
$username = 'root';
$password = '';
try
{
    $dbh = new PDO("mysql:host=$hostname;dbname=test", $username, $password);
    echo 'Connected to database';
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = $dbh->prepare("INSERT INTO `files` (filename, type, file) VALUES('img.png', 'image/png', :bin)");
    $sql->bindParam("bin", file_get_contents("img.png"));
    $sql->execute();
    $sql = $dbh->prepare("SELECT * FROM `files` WHERE `filename`='img.png'");
    $sql->execute();
    $result = $sql->fetch();
    $file = fopen("new-".$result['filename'], "w+");
    $w = fwrite($file, $result['file']);
    fclose($file);
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
?>

对于您要执行的操作:

  1. 使用上传的临时文件代替固定文件。

  2. 您可以使用该文件的MIME类型(您可以使用php获取它)

  3. 当您需要读取文件时,只需读取 BLOB 字段并将其写入使用文件名作为名称的文件。

我没有注意到 BLOB 字段有任何问题。如果您无法解决此问题,则可以使用TEXT字段并将base64_encode(文件)存储到其中。

相关文章: