Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图像文件结构和编码文件名。比如Facebook图片URL_Java_Image_Facebook_Filenames_Url Encoding - Fatal编程技术网

Java 图像文件结构和编码文件名。比如Facebook图片URL

Java 图像文件结构和编码文件名。比如Facebook图片URL,java,image,facebook,filenames,url-encoding,Java,Image,Facebook,Filenames,Url Encoding,我想知道如果用户有不同的用户名和相册,web应用程序保存用户图像的最佳文件夹结构是什么。我正在使用AmazonS3、文件夹和存储桶 我不希望人们能够预测像FB这样的用户/相册的URL 也适用于文件名。要将文件名更改为哪种类型,最好进行编码。 (用户名、日期/时间、用户id) 例如 原件: apple.jpg 编码: 1263547483_56783929_3934736_943883.jpg 您将使用什么来编码这些Url安全文件名?Base64,MessageDigests?我会创建“随机”文

我想知道如果用户有不同的用户名和相册,web应用程序保存用户图像的最佳文件夹结构是什么。我正在使用AmazonS3、文件夹和存储桶

我不希望人们能够预测像FB这样的用户/相册的URL

也适用于文件名。要将文件名更改为哪种类型,最好进行编码。 (用户名、日期/时间、用户id) 例如

原件: apple.jpg

编码: 1263547483_56783929_3934736_943883.jpg

您将使用什么来编码这些Url安全文件名?Base64,MessageDigests?

我会创建“随机”文件名。这些文件可以保存在一个目录中,也可以保存在生成的目录结构中,如dir01、dir02、dir03。对于大量的文件,单独的目录更好。我认为您不应该在一个目录中存储超过10K的文件。若你们有更多的文件,那个么每次计数器到达10K时都要创建一个新的目录

文件系统中包括物理路径在内的所有文件元数据都应存储在数据库中。“文件”表可能包含“用户外键”表,所以您可以随时知道文件的所有者


这种设计是可扩展的:将来您可以在单独的磁盘上存储不同的目录,甚至可以使用CDN系统。这已经足够安全了。不可能猜到您是如何将文件元数据编码为文件名的,因为您不编码任何内容:您只是创建随机名称。它简单而强大。所有数据都在DB中,因此您可以在将来添加新功能,并在DB中的旧数据上运行它们。

使用ex Base64编码似乎不是个好主意。我只需将文件名替换为GUID,并在数据库中创建一个映射,将文件和GUID映射在一起

比如:

http://photos.site.com/{account-id}/{gallery-id}/{image-guid}.jpg
这将导致:

http://photos.site.com/23323/323/F66A80B2_007F_11E0_86C8_322ADFD72085.jpg