我一直在使用sqlserver和asp.net来存储和检索图像。但我认为每次通过数据库并检索文件似乎非常耗费资源。但是,如果我将图像存储在服务器上的文件夹中是否合适且标准与否?有没有其他的工作和一些专业建议???
答案 0 :(得分:1)
将图像存储在文件系统中,(重新)在图像散列后命名(md5已经证明有collisions的机会,尝试SHA1或RIPEMD-160),存储哈希作为数据库中的索引,以及所有' meta'您希望与该图片关联/存储的数据(来源IP,原始名称,尺寸,上传者/作者等)。
但这只是一种方式,而且是最佳的方式。做事的方式'它'取决于你的具体情况。
修改强>
我在某些场合使用了一种变体:md5(固定长度哈希输出)附加了crc32(固定长度哈希输出)。与160位散列相比,这仍然是相同的总输出大小,但我认为碰撞机会很小(可能不存在,但是,如果你实际上找到2个不同的文件同时具有相同的md5 和< / em> crc32,你可以收集你的5分钟互联网名望。)
然后我使用base64编码降低了文件名长度。最重要的是计算 - 开销&#39;只是在您向系统添加/上传图像时才会发生
例如,包含md5 d8a4608d42c38ead31439b0896212311
和crc32 ed108bd0
(变为d8a4608d42c38ead31439b0896212311ed108bd0
)的文件会在base64中显示2KRgjULDjq0xQ5sIliEjEe0Qi9A=
。
费用为&#39;有些长文件名,这有很好的奖励,即使在拇指和高分辨率版本之间,生成的文件名也应该很难预测。
祝你好运!