PHP问题论坛附件功能帮助

时间:2009-08-16 02:00:08

标签: php

HI

我有一个论坛,我正在考虑如何做一个“附件”功能。 你知道如果你创建一个线程,你可以选择上传文件并将其附加到帖子中。

我应该在表格文件中创建一个名为附件的表,其中包含文件ID的id吗?什么是最好的方式。我希望您能够上传超过1个附件。如果它是一张图片显示图片的一点点缩影。

我该如何检查文件是否存在等?你会怎么做?

抱歉我的英语不好

3 个答案:

答案 0 :(得分:0)

你的问题太宽泛了,但我会给你一些指示:

  • 将图像存储在磁盘上,例如/uploads/--thread_id--/1.jpg,/uploads/--thread_id--/2.jpg等等(这样你就不用了对您的数据库的任何更改)

关于上传过程,验证和图片大小调整,您可以阅读更多内容(我建议您按此顺序阅读):

http://pt.php.net/manual/en/function.exif-imagetype.php -> image validation
http://php.net/manual/en/function.move-uploaded-file.php -> upload process
http://pt.php.net/manual/en/book.image.php -> image resizing & manipulation

答案 1 :(得分:0)

Chacha的计划听起来不错,但你必须要小心。确保您保存的文件没有任何执行权限,并且该文件不在服务器上可通过Web访问的目录中。为了安全起见,我认为你应该将上传目录放在比你的web目录更高的目录中。

保存文件的另一种可能方法:将二进制代码保存在数据库中的blob中。我不确定这种方法是否有任何优势,但我个人不必处理文件上传。

最重要的是,小心上传数据!

答案 2 :(得分:-1)

老实说,我会在帖子表上创建一个名为“附件”的列,然后用逗号分隔的附件文件名字符串

file1.png,file2.png,file3.png

然后当你进入PHP时,只需将其爆炸

$attachments = explode(',', $string);

并检查您已放入上传目录的每个文件:

foreach($attachments as $file)
{
    if(!is_file($upload_directory.$file))
    {
        $error[] = $file . " is not a valid attachment";
        // run cleanup script
    }
}

要获取附件,这是非常简单的代码,但您需要验证并清理传入的文件。

foreach($_FILES as $array)
{
    // Sanitize Here
    die("SANITIZE HERE!");

    move_uploaded_file($array['tmp_name'], $upload_dir);
}