存储用户上传的文件



我正在做一些用户可以上传文件,特别是图像(JPG,GIF和PNG)的内容。我做了明显的事情,例如清洁文件名,只允许字母,数字和一些符号,但是我对它的思考越多,我想到的问题就越多。

例如,如果用户上载文件与已经存储的名称相同的文件怎么办?它将覆盖它,所以我考虑将时间戳记附加到文件名的末尾,但这不会对SEO产生负面影响?

在存储用户在文件系统上存储文件,将条目添加到数据库中并优化SEO的图像?>


图像可以匿名上传。

通常,搜索引擎不在乎,只要元数据很好并且文件名包含尽可能靠近左侧的相关信息。

例如,eiffel-tower.jpg,eiffel-tower-01.jpg和eiffel-tower-02736293.jpg不会获得所有不同的SEO分数。

在您的特殊情况下,将" -xx"附加到文件名上,其中xx是同一名称的当前图像 1的当前图像的数量。时间戳将更容易实施,但是数字越少,它看上去越漂亮,搜索引擎和人员。

另一个选项是按日期将其存储到子文件夹中,如/2014/03/eiffel-tower.jpg。同样,如果有人上传了同名的图像,则可以如上所述附加" -xx"。

我的建议是将文件存储到例如"上传"目录中。将" .htaccess"文件放入此目录中:

deny from all

存储的文件只能由时间戳和随机数字命名,例如原始名称的第一个字母。然后,您将文件信息存储在数据库中。

现在,一个用于读取请求的文件的PHP文件,以及一些重写文件的规则,以将文件重定向到该文件的长名。

这有意义吗?

是否可以期望上传具有相同名称的文件会覆盖旧的文件吗?

如果不需要行为(假设您正在执行备份),则如果File_exists()重命名旧文件,然后将新上传写入旧地址。

bulldog.jpg

副本变为:

bulldog.jpg
1bulldog.jpg

或类似。

您可以使用9AJK298.JPG(例如9AJK298.JPG)存储图像。将原始名称,唯一键,扩展名存储在数据库中。

添加一些重写规则和服务器端脚本以模拟

www.example.com/images/9ajk298/bulldog.jpg

通常使用此方法;

1)检查文件是否存在

2)如果存在,则文件名的前缀或后缀...

例如,在WordPress中,如果存在文件,则WP将宽度X添加到图像末端...例如image_name_250x300.jpgimage_name_500x600.jpg等...

更新:前缀或后缀对SEO并不重要。Google停下来关注很久以前可以通过网站所有者操纵的东西。

相关内容

  • 没有找到相关文章