2012-04-10 58 views
0

我被要求将多个附件(最多5个)保存到数据库,然后在php中将它们回收到另一个页面。 我已经为此搜索了一个星期以上,并且只找到可以将一个文件保存到数据库然后再回顾它们的教程。保存5个附件,然后检索它们

我的场景是我发送一个电子邮件与这些多个附件,电子邮件被保存在一个表“电子邮件”,现在我想要的附件也被保存在那里,在另一列,所以很容易检索他们,在一个PHP页面上。

请任何人在这种情况下帮助我。 为我提供一个适当的指导路线。 我米使用phpMyAdmin保存所有说事

回答

1

这里是你想要的解决方案: 上传完毕后5个文件服务器读取他们到内存和base64_encode

E.g.

$files = array(
    'file1' => base64_encode(file_get_contents('/path/to/file1')), 
    'file2' => base64_encode(file_get_contents('/path/to/file2')), 
    'file3' => base64_encode(file_get_contents('/path/to/file3')), 
    'file4' => base64_encode(file_get_contents('/path/to/file4')), 
    'file5' => base64_encode(file_get_contents('/path/to/file5')), 
); 

// serialize 
$filesData = serialize($files);  
// put $filesData in db column 

// when your retrieve it later from database, unserialize and use array 
$files = unserialize($columnValue); 

既然你有文件诠释内存和他们的编码,可以用Content-Transfer-Encoding: base64添加附件的base64。

+0

当我反序列化数据,获取文件,它写在那里“阵列”。我怎样才能得到实际的文件,以链接的形式下载任何人。即使在保存文件数据的列中的数据库中,即[BLOB - 712.9KiB],当我尝试单击它时,请查看这些文件,保存.bin类型。我已经发送了.jpg文件 – 2012-04-12 14:36:11

+1

@HansIdrees这是一个不同的问题。如果你想显示文件作为链接,你将不得不创建一个需要某种文件ID的新页面(例如'download.php?email = xxx&fileId = xxx',在那里你必须从数据库+通过设置header('Content-Type:image/jpeg')'或任何文件并显示文件数据'die($ base64DecodedFile)来显示所有文件, '。 – Alex 2012-04-12 15:00:59

+0

您能否为我提供一个教程链接或其他任何帮助链接。我是一名初学者,所以请在 – 2012-04-12 16:30:14

相关问题