我正在制作一个脚本来通过php上传文件。我想知道的是,如何显示已上传的文件,点击它们打开它们进行下载。我应该将名称和路径存储在数据库中,还是仅使用php列出目录的分数?
答案 0 :(得分:3)
结帐handling file uploads in PHP。几点:
答案 1 :(得分:1)
在数据库中存储路径可能没问题,具体取决于您的特定应用程序,但考虑将文件名存储在数据库中,并在一个位置构建PHP中这些文件的路径。这样,如果您以后最终移动所有上传的文件,则代码中只需要一个位置来更改路径生成,并且可以避免在数据库中的“路径”字段上进行大量数据转换。
例如,对于文件1234.txt,您可以将其存储在:
/your_web_directory/uploaded_files/1/2/3/1234.txt
您可以使用配置文件,或者如果您愿意,可以使用全局某个地方来定义上传的存储路径(/您的网络目录/上传文件/),然后将文件名(在数据库中)中的字符拆分为数字该文件实际驻留在哪个子目录中。
至于显示文件,您可以简单地从数据库加载文件列表,并使用路径生成函数根据文件名获取每个文件的下载路径。如果要对文件列表进行分页,请尝试使用START 0,LIMIT 50等内容;在mySQL中。只需在每个连续的上传结果页面中传入一个新的起始编号。
答案 2 :(得分:0)
从这个意义上说,也许你应该使用文件:
myfile.txt
My Uploaded File||my_upload_dir/my_uploaded_file.pdf
Other Uploaded File||my_upload_dir/other_uploaded.html
并像这样经历他们:
<?php
$file = "myfile.txt";
$lines = file($file);
$files = array();
for($i=0;$i<=count($lines)-1;$i++) {
$parts = explode($lines[$i]);
$name = parts[0];
$filename = parts[1];
$files[$i][0] = $name;
$files[$i][1] = $filename;
}
print_r($files);
?>
希望这会有所帮助。 :)
答案 3 :(得分:-1)
我一直做的事(过去时,我还没有写过多年的上传脚本)是,我将上传脚本(任何上传脚本)链接到一个简单的数据库。
这提供了一些优点;
显然,也有一些缺点;
如前所述(但我们不能提,我害怕); _保持上传安全!_
MIME类型/扩展问题是一个持续很长时间的问题。我认为现在大多数网络都是可靠的,但过去曾经有一段时间开发人员会检查MIME类型或扩展名,但绝不会同时检查两者(为什么要这么麻烦? )。这导致网站非常非常漏洞。
如果写得不正确,上传脚本是您安全的重大漏洞。一个很好的例子就是我在一段时间内“攻击”的网站(当然是根据他们的要求)。他们支持将图像上传到photoalbum,但他们只检查了文件扩展名。所以我上传了一个GIF,里面有一个目录扫描器。这使我能够扫描整个系统(因为它不是专用服务器;我可以看到更多)。
希望我帮忙;)