【问题标题】:Access folder and select filename using PHP使用 PHP 访问文件夹并选择文件名
【发布时间】:2014-02-24 10:38:36
【问题描述】:

我写了一个代码,用户选择一张头像,然后图片存储在localhost/user/$username/photos/photo1.gif中。

之后,我将文件名 (photo1.gif) 分配到会话变量中,这样我就可以从我的所有 php 脚本中显示它。这工作得很好。我可以通过访问这个会话变量在每个 php 脚本中显示图片。

我遇到的唯一问题是当我尝试从登录页面登录时:在登录页面中,我连接到数据库,检索电子邮件和密码,检查它们,如果它们正常,我将用户重定向到 home.php .问题是用户的照片没有链接到电子邮件,所以我不知道照片的文件名。我唯一确定的是目录(因为我也可以从数据库中检索用户名)。

假设用户上传了 4 张照片(照片 1、照片 2、照片 3、照片 4 - 最后上传了照片 4)。他目前使用 photo4 作为我的头像是有道理的。 有没有办法让我访问该文件夹并检索上次上传的图片的文件名?

另外,作为一个普遍问题,将照片(或文件)存储在数据库或服务器中更好吗?

【问题讨论】:

    标签: php mysql session directory filenames


    【解决方案1】:

    几个选项:

    最好创建一个照片表并将 user_id 和照片位置存储在该表中。通常不建议将表中的实际照片存储为 blob。

    或者,为了避免更多的表格,您可以将照片重命名为

    username_photo1.jpg
    username_photo2.jpg
    username_photo3.jpg
    

    然后你可以检索其中最大的一个。

    最后,另一种选择是获取目录中照片的文件创建日期,并拍摄最近的照片。

    Getting the filenames of all files in a folder

    【讨论】:

    • 你的意思是把图片的url存储在一个mysql表中,然后从那里调用?
    • 是的,要么存储 url,要么存储文件夹路径。如果您存储文件夹路径,则可以将其相对于 root 存储,然后编写一个函数将其转换为 url - 这是我经常做的。或者存储 url 和文件夹路径(这是我实际做的)。您可以为“优先级”添加一个字段,然后为照片编号并获取最高优先级的照片 - 所有 sql。
    • 关于表格,哪个更好:为每个部分创建一个表格(例如,不同的消息表格、不同的照片表格、不同的用户详细信息表格等)还是一个表格来处理所有这些?
    • 如果每个用户有不止一张照片,它应该是不同的表。这是一对多的关系。其他项目 - 你需要弄清楚关系 - 一对一,一对多,多对多,多对一。 db 架构在网络上得到了很好的讨论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多