我正在制作用户可以上传文件的内容,特别是图片(jpg,gif和png)。我做了很明显的事情,比如清理文件名,只允许字母,数字和符号,但我想的越多,我想到的问题就越多。
例如,如果用户上传的文件与已存储的文件同名,该怎么办?它会覆盖它,所以我想在文件名的末尾添加一个时间戳,但这不会对SEO产生负面影响吗?
在存储用户上传文件时,在文件系统上实际存储文件,在数据库中添加条目以及优化(在本例中为SEO的图像)时,标准做法是什么?
图片可以匿名上传。
答案 0 :(得分:0)
我的建议是将文件存储到例如“uploads”目录中。将“.htaccess”文件放在此目录中:
deny from all
存储的文件只能通过时间戳和随机数命名,例如,或原始名称的第一个字母。然后,将文件信息存储在数据库中。
现在,一个用于读取所请求文件的PHP文件,以及一些重写规则,用于在文件的长名称上重定向到此PHP文件。
这有意义吗?
答案 1 :(得分:0)
是否不期望上传具有相同名称的文件会覆盖旧文件?
如果这不是必需的行为(比如你正在进行备份),那么如果file_exists()然后重命名旧文件,然后将新上传写入旧地址。
bulldog.jpg
副本变为:
bulldog.jpg
1bulldog.jpg
或类似。
答案 2 :(得分:0)
一般情况下,只要元数据很好并且文件名包含尽可能靠近左侧的相关信息,搜索引擎就不会太在意了。
例如,eiffel-tower.jpg,eiffel-tower-01.jpg和eiffel-tower-02736293.jpg将无法获得所有不同的SEO分数。
在您的特定情况下,将“-xx”附加到文件名,其中xx是同名+1的当前图像的数量就可以了。时间戳将更容易实现,但数字越少,它对搜索引擎和人们看起来越漂亮。
另一个选项是按日期将它们存储到子文件夹中,如/2014/03/eiffel-tower.jpg。同样,如果有人上传了同名图像,您可以如上所述附加“-xx”。
答案 3 :(得分:0)
通常这种方法正在使用中;
1)检查文件是否存在
2)如果存在,则为文件名的前缀或后缀......
例如在wordpress中,如果存在文件,则wp将width x height添加到图像的末尾...如image_name_250x300.jpg
和image_name_500x600.jpg
等...
更新:前缀或后缀对于seo并不重要。很久以前,Google停止关注网站所有者可以操纵的内容。
答案 4 :(得分:0)
您可以使用9ajk298.jpg等唯一键存储图像。将原始名称,唯一键,扩展名存储在数据库中。
添加一些重写规则和服务器端脚本以将其模拟为
www.example.com/images/9ajk298/bulldog.jpg