簡體   English   中英

使用一個表將不同的MIME類型上傳到數據庫

[英]uploading different MIME types to a DataBase with one table

我正在一個項目中,該用戶將上載具有不同MIME類型的多個文件,並且我想將這些文件保存到數據庫(帶有InnoDB engeen的Mysql)。 現在,這些是我的問題:
1 /我應該為每種MIME類型創建多個表還是為每種類型創建不同的行?
2 /我在mysql的行類型中針對字段的類型測試了BLOB,但是DB似乎有問題!
-我嘗試過MEDIUM BLOB和LONG BLOB--
3 /如果我必須將每個MIME類型保存在不同的行或表中,則此iletype的類型是可以的:
a / pdf b / jpeg c / png d / gif e / video / mp4 f / application / word

這是我剛剛測試過的一個小例子

表:文件

id(主鍵,自動遞增)

文件名(varchar 255)

類型(varchar 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(file)存儲到該字段中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM