我正在制作一些东西,用户可以上传文件,特别是图片(jpg,gif和png)。我做了一些显而易见的事情,比如清理文件名,只允许使用字母、数字和一些符号,但是我越想越多,我就会想到更多的问题。
例如,如果用户上传与已经存储的文件同名的文件,该怎么办?它将覆盖它,所以我考虑在文件名的末尾加上一个时间戳,但这不是会对SEO产生负面影响吗?
在存储用户上传的文件时,标准实践是什么,比如将文件实际存储在文件系统中,在数据库中添加一个条目,以及在这种情况下优化SEO的图像?
图片可以匿名上传。
发布于 2014-01-27 18:41:56
一般来说,搜索引擎不会太在意,只要元数据很好,并且文件名包含尽可能接近左边的相关信息。
例如,埃菲尔铁塔. all、埃菲尔铁塔-01.jpg和埃菲尔铁塔-02736293.jpg不会得到那么多不同的SEO分数。
在您的特殊情况下,将"-xx“附加到文件名中,其中xx是同名+1的当前图像的数量,这样做很好。时间戳将更容易实现,但是数字越少,它对搜索引擎和用户的外观就越漂亮。
另一种选择是按日期将它们存储到子文件夹中,如/2014/03/eiffel-tower.jpg。同样,如果有人上传了同名的图像,您可以添加上面的"-xx“。
发布于 2014-01-27 18:37:22
我的建议是将文件存储到例如“上载”目录中。在这个目录中放置一个".htaccess“文件,其中:
deny from all存储的文件只能通过时间戳和随机数(例如,原名的第一个字母)来命名。然后,将文件信息存储在数据库中。
现在,一个PHP文件来读取请求的文件,还有一些重写规则来重定向到这个PHP文件上的长文件名。
这有意义吗?
发布于 2014-01-27 18:38:15
难道不期望上传一个同名的文件会覆盖旧的文件吗?
如果这不是必需的行为(比如您正在进行备份),那么如果file_exists()那么重命名旧文件,然后将新上传写到旧地址。
bulldog.jpg复本即成:
bulldog.jpg
1bulldog.jpg或者类似的。
https://stackoverflow.com/questions/21388762
复制相似问题