Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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
C# 如何在数据库和磁盘(如BaseCamp document manager)中创建相同文件的版本_C#_File_File Upload_Document_Basecamp - Fatal编程技术网

C# 如何在数据库和磁盘(如BaseCamp document manager)中创建相同文件的版本

C# 如何在数据库和磁盘(如BaseCamp document manager)中创建相同文件的版本,c#,file,file-upload,document,basecamp,C#,File,File Upload,Document,Basecamp,如果您使用过“文档管理器”页面,也可以在此处使用。我喜欢在同一个文件上传两次时创建版本的特性,[用户可以选择指定将文件创建为新版本]。您认为这些文件在数据库中如何作为记录维护,在磁盘中如何作为文件维护。从我的检查,似乎文件保存如下 结构 例如,考虑以下因素 例子 用户名为“mak” 项目名称“izord”和 文件名为“base.html” 它有两个版本,这里是目录结构 [mak] [izord] [base] [V1] base

如果您使用过“文档管理器”页面,也可以在此处使用。我喜欢在同一个文件上传两次时创建版本的特性,[用户可以选择指定将文件创建为新版本]。您认为这些文件在
数据库
中如何作为记录维护,在
磁盘
中如何作为文件维护。从我的检查,似乎文件保存如下

结构 例如,考虑以下因素

例子
  • 用户名为“mak”

  • 项目名称“izord”和

  • 文件名为“base.html”

  • 它有两个版本,这里是目录结构

       [mak]
         [izord]
          [base]
            [V1]
             base.html
            [V2]
              base.html
    
    我的假设可能是错误的,但这就是为什么我要在这里纠正它

    问题:
  • 在这种情况下,您认为我如何组织磁盘上的文件
  • 您是否有用于保存文件详细信息的预制、已开发的表结构
  • 如何根据演示视频中的字母表对表中的文件进行排序。他们在维持另一张桌子吗

  • 首先,我非常确定他们将文件存储在S3中,所以要考虑到这一点

    至于数据库结构,我会有类似

    Account:      ID
    Project:      ID, AccountID
    File:         ID, ProjectID, Name, ContentType, CurrentRevision
    FileRevision: ID, FileID, ContentLength, AmazonS3Key, CreatedAt, CreatedBy
    
    然后将每个文件存储在
    //
    目录下(S3中没有实际的目录,但它们是用正斜杠模拟的)。文件内容位于适当的目录中:

    <bucket>/<account-id>/<project-id>/<file-name>
      v1
      v2
      ...
      v13
    
    ///
    v1
    v2
    ...
    v13
    
    上传文件的新版本只需将
    v
    条目添加到S3存储中即可


    还请注意,公开帐户和项目的ID可能不是一个好主意,因此我将使用这些ID的哈希:
    //

    首先,我非常确定它们将文件存储在S3中,所以要考虑到这一点

    至于数据库结构,我会有类似

    Account:      ID
    Project:      ID, AccountID
    File:         ID, ProjectID, Name, ContentType, CurrentRevision
    FileRevision: ID, FileID, ContentLength, AmazonS3Key, CreatedAt, CreatedBy
    
    然后将每个文件存储在
    //
    目录下(S3中没有实际的目录,但它们是用正斜杠模拟的)。文件内容位于适当的目录中:

    <bucket>/<account-id>/<project-id>/<file-name>
      v1
      v2
      ...
      v13
    
    ///
    v1
    v2
    ...
    v13
    
    上传文件的新版本只需将
    v
    条目添加到S3存储中即可


    还要注意的是,公开帐户和项目的ID可能不是一个好主意,所以我会用散列法:
    //

    是的,他们可能会使用亚马逊,但当查看视频时,当用户悬停在文件链接上时,它似乎在目录中。是吗?是的,我同意第2点,因为这就是他们的结构从视频中看出来的方式
    projects/631767/file/3152703/filename
    projects/631767/file/3152700/filename
    31527部分可能是一些内容的散列,然后他们会附加01,02,03作为版本。通常在S3中托管内容的方法是有一个指向您站点的链接,然后生成一个所谓的“预签名URL”并重定向回它。是的,他们可能会使用amazon,但是,当查看该视频时,当用户将鼠标悬停在文件链接上时,它似乎位于目录中。是吗?是的,我同意第2点,因为这就是他们的结构从视频中看出来的方式
    projects/631767/file/3152703/filename
    projects/631767/file/3152700/filename
    31527部分可能是某个内容的散列,然后它们会附加01,02,03作为版本。在S3中托管内容的通常方式是有一个指向您的站点的链接,该链接将生成一个所谓的“预签名URL”并重定向回它。