2011-03-18 58 views
0

我可以允许用户上传到我们的服务器文件,然后可以安全地存储,并可以上传他们的用户访问?如何安全地上传和存储用户文档?

我在哪里存储他们,在数据库中?或在网站上的文件夹?如果我确实使用文件夹?我怎么能让拥有他们的人看到它而不是其他人?

我是新来的存储区,所以请裸露任何愚蠢的问题。

谢谢。

+0

我建议你扩大“安全存储”的含义。 – 2011-03-18 14:42:18

+0

另外,RE:安全地上传,也许看用HTTP/SSL。 – 2011-03-18 14:45:12

回答

0

使用<input type='file' />上传的文件到达$_FILES超全局数组中的目标PHP脚本。 (Documentation

通常最好将它们存储在数据库的binary BLOB column中,在这里您可以轻松地将它们与用户标识相关联,从而防止未经授权的用户下载它们。它们通常与包含文件的MIME类型和大小(以字节为单位)的列一起存储。

以传输文件返回到浏览器的用户,可以从PHP发送适当的Content-Type头:

// the mimetype 
header("Content-type: application/whatever"); 
header("Content-length: $length-in-bytes"); 

// echo the file out to the browser 
echo $file; 
exit(); 
+0

是否有我可以参考的示例代码?我得到了你向我展示的概念,但不是这个过程,就像实现它一样。 – KPO 2011-03-18 14:40:49

+0

查看此前类似的问题:http://stackoverflow.com/questions/3300067/store-files-in-mysql-database-from-html-form – 2011-03-18 14:43:11

+0

不要忘记,虽然BLOB列有限制的大小,你会需要一些代码将文件分割成表中的多行。 – Treffynnon 2011-03-18 14:50:11

1

文件,你需要跨越或使用搜索的文件,而不是文本数据在数据库中聚合函数。操作系统文件系统专门用于处理文件的快速投放和搜索。所以我不会把它们放在数据库中,而是放在文件系统上。

要保护它们,您可以将它们放置在禁止访问的.htaccess文件的文件夹中,或将它们放在document_root之外。然后,您可以编写一个简单的PHP脚本来将这些文件回传给用户,前提是他们有权查看该文件。

+0

嘿。但是,我如何为每个用户编写一个htacess?以及如何设置权限。任何教程我可以查看? – KPO 2011-03-18 15:30:16

+0

你*不要为每个用户写一个'.htaccess'。只有一个禁止所有访问_AND_,然后使用PHP脚本将文件流式传输给用户。 – Treffynnon 2011-03-18 15:36:52

+0

谢谢。给我2-4天试试这个。当它工作,我会标记你的答案! – KPO 2011-03-19 03:22:58