我可以允许用户上传到我们的服务器文件,然后可以安全地存储,并可以上传他们的用户访问?如何安全地上传和存储用户文档?
我在哪里存储他们,在数据库中?或在网站上的文件夹?如果我确实使用文件夹?我怎么能让拥有他们的人看到它而不是其他人?
我是新来的存储区,所以请裸露任何愚蠢的问题。
谢谢。
我可以允许用户上传到我们的服务器文件,然后可以安全地存储,并可以上传他们的用户访问?如何安全地上传和存储用户文档?
我在哪里存储他们,在数据库中?或在网站上的文件夹?如果我确实使用文件夹?我怎么能让拥有他们的人看到它而不是其他人?
我是新来的存储区,所以请裸露任何愚蠢的问题。
谢谢。
使用<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();
是否有我可以参考的示例代码?我得到了你向我展示的概念,但不是这个过程,就像实现它一样。 – KPO 2011-03-18 14:40:49
查看此前类似的问题:http://stackoverflow.com/questions/3300067/store-files-in-mysql-database-from-html-form – 2011-03-18 14:43:11
不要忘记,虽然BLOB列有限制的大小,你会需要一些代码将文件分割成表中的多行。 – Treffynnon 2011-03-18 14:50:11
文件,你需要跨越或使用搜索的文件,而不是文本数据在数据库中聚合函数。操作系统文件系统专门用于处理文件的快速投放和搜索。所以我不会把它们放在数据库中,而是放在文件系统上。
要保护它们,您可以将它们放置在禁止访问的.htaccess
文件的文件夹中,或将它们放在document_root
之外。然后,您可以编写一个简单的PHP脚本来将这些文件回传给用户,前提是他们有权查看该文件。
嘿。但是,我如何为每个用户编写一个htacess?以及如何设置权限。任何教程我可以查看? – KPO 2011-03-18 15:30:16
你*不要为每个用户写一个'.htaccess'。只有一个禁止所有访问_AND_,然后使用PHP脚本将文件流式传输给用户。 – Treffynnon 2011-03-18 15:36:52
谢谢。给我2-4天试试这个。当它工作,我会标记你的答案! – KPO 2011-03-19 03:22:58
我建议你扩大“安全存储”的含义。 – 2011-03-18 14:42:18
另外,RE:安全地上传,也许看用HTTP/SSL。 – 2011-03-18 14:45:12