将上传的文件转换为无法下载的特定文件格式

时间:2010-03-04 04:52:37

标签: php mysql security file-upload file-conversion

我遇到了阻止下载和保存上传文件的问题。

我的用户可以上传多种文件类型,例如doc,pdf,ppt等....

如果任何人有网址,则可以轻松下载所有文件类型。

那么阻止下载文件的更好方法是什么。

或者我将上传的文件转换为一些无法轻松下载的特定格式(例如闪存)..

我在php和mysql上运行。

感谢
阿维纳什

3 个答案:

答案 0 :(得分:2)

在这方面你有两种选择。第一种是通过PHP脚本将文件移动到服务器web目录之外的服务器端文件夹。第二种是将文件存储在MySQL表的BLOB列中。两者都会阻止用户直接访问文件,而无需将文件转换为不那么容易下载的格式。

答案 1 :(得分:1)

将文件上传到文档根目录之外。例如:

/var/username/uploads/file.docx

您的文档根目录

/var/username/public_html/index.php

因此无法直接访问它们。然后,如果您想允许下载,请创建一个名为“download.php”的PHP文件,该文件类似于:

$data  = file_get_contents('/var/username/uploads/file.docx');
header('Content-Type: application/docx');
header('Content-Length: '.strlen($data));
header('X-Content-Type-Options: nosniff');
echo $data;

显然,您可以添加检查以查看用户是否具有下载此特定文件或登录的正确权限。

答案 2 :(得分:0)

解决方案可以是将用户和密码设置为上传文件夹,因此只有知道身份验证详细信息的用户才能下载文件。 查看下一个链接,了解如何在服务器文件夹中创建htpasswd文件:


http://httpd.apache.org/docs/1.3/programs/htpasswd.html