Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
File “最佳”;建筑";在服务器上为每个用户存储大量文件_File_Server_Store - Fatal编程技术网

File “最佳”;建筑";在服务器上为每个用户存储大量文件

File “最佳”;建筑";在服务器上为每个用户存储大量文件,file,server,store,File,Server,Store,我想征求你的意见和建议。 在我的应用程序中,我需要存储从用户上传的文件,以便导入数据库-它可以是XML或excel文件(.xlsx),我猜每个文件的最大文件大小大约为500kB。 需要存储文件,因为导入到数据库并不是立即完成的,而且还需要备份。 我认为大约有数千(十)个用户的场景。 场景-一个用户可以将多个文件上载到多个类别。这意味着用户可以将文件_1上载到类别1,将文件_2上载到类别_2,还可以将文件_3上载到类别_2_1(类别_2的子类别) 一般来说,存在某种类别树,用户可以将多个文件上传到

我想征求你的意见和建议。 在我的应用程序中,我需要存储从用户上传的文件,以便导入数据库-它可以是XML或excel文件(.xlsx),我猜每个文件的最大文件大小大约为500kB。 需要存储文件,因为导入到数据库并不是立即完成的,而且还需要备份。 我认为大约有数千(十)个用户的场景。 场景-一个用户可以将多个文件上载到多个类别。这意味着用户可以将文件_1上载到类别1,将文件_2上载到类别_2,还可以将文件_3上载到类别_2_1(类别_2的子类别)

一般来说,存在某种类别树,用户可以将多个文件上传到多个节点

由于导入应用程序的原因,文件名将始终包含: 用户\代码\类别\代码\时间戳

我的问题是,我不知道这是存储这些文件的最佳方式

  • 我应该每个用户有一个目录->每个类别有一个目录->相关文件吗
  • 我应该每个用户有一个目录->所有用户文件吗
  • 我应该有一个根目录->所有用户和所有文件吗
  • ?
在最好的方式,我的意思是-必须有进口申请,这将列出在类别和相关用户的相关文件。正如我在上面写的,有很多方法,所以我有点困惑。 我还应该考虑什么?文件系统限制

希望你们能理解这个问题


谢谢。

您使用的是某种框架吗?最好的情况是使用插件

存储文件的标准基本解决方案是为所有文件(例如图像)提供一个目录。保存文件时,会更改文件的名称,以便它们不会在目录中重复。将所有其他数据保存在DB表中

在此基础上,您可以根据业务逻辑改进和更改解决方案。 您可能希望限制对文件的访问,如果需要浏览这些文件,您可能希望将它们放在树目录中。
等等…

谢谢你的提问!在网上很难找到这个问题的答案,但在我的例子中,我可能有10k的图像/PDF/文件/等等,而且似乎使用散列并保存到一个位置目录是理想的,这样就不那么复杂了

需要思考的有用事情: 1.添加一些额外的元数据(您可以在S3存储桶中执行此操作) 2.如果相关,我会确保您可以选择调整图像大小,例如
?w=200&h=200
。 3.也许可以保存一个文件名,如果用户下载它,它可以显示出来,这样就不会给他们一些奇怪的散列。 4.如果基于当前时间以外的哈希值进行保存,则可以生成不重复的哈希值。
5.试图一次查看所有文件会影响性能,但当您的应用程序基于端点一次只请求一个文件时,这应该不是问题

我对问题的描述可能不准确。只考虑从用户上传的文件和导入的应用程序。从excel导入的应用程序是用PHP编写的,XML可以用一些插件编写,等等。我认为这个框架对我的问题并不重要。业务逻辑不是这个场景的合适术语——我正在解决文件中的数据问题,这些数据被解析并导入数据库。文件名总是唯一的,整个问题是关于如何管理目录和文件。用户名和子目录方法有以下缺陷-如果用户名更改了名称,或类别名称更改-您必须重命名目录。是的,当然。。。比方说,用户名或类别也总是用一些代码指定的,这是不可编辑的,目录应该用这些代码命名-我认为,重命名会有最小的问题…一个目录用于所有文件是标准的最佳解决方案。我在过去实现过这样的解决方案,我对所有文件(业务报告)使用一个目录。标准解决方案以外的任何其他解决方案都需要附加规则和用例。