【问题标题】:how to write a RESTful filemanger?如何编写一个 RESTful 文件管理器?
【发布时间】:2011-02-28 09:06:27
【问题描述】:

今天我有一个直接的问题:P 我只需要一些想法...... 如何在 Rails 中编写 RESTful 文件管理器?

我想使用一个文件控制器来对文件执行所有操作。 现在当我安静地做这件事时,只有一些功能:

  • create(创建文件/目录)
  • destroy(删除文件/目录)
  • 索引(列出目录)
  • show(显示文件的属性)
  • 编辑(重命名文件/目录)

现在我不知道如何复制/移动文件... 当我希望用户拥有该文件管理器的多个实例时,我如何管理他可以在不同的目录中? (在一个会话中有不同的文件管理器实例)

谁能给我一些提示? :P

【问题讨论】:

    标签: ruby-on-rails-3 file-management


    【解决方案1】:

    您可以将 file 定义为 rails 路由中的资源。然后你就有了你的 RESTful 路由。如果您有文件或数据库资源,则 Rails 并不重要。 RESTful 路由是相同的。您文件的唯一标识符可以是唯一文件名:“/files/file.pdf”。

    我建议您使用抽象来对文件系统执行操作(例如用于数据库访问的对象关系映射)。例如,我可以想到carrierwave。它处理文件上传并提供删除/销毁等基本操作。它还允许您更改存储量(文件、gridfx、amazon s3)。

    我不确定您对文件管理器的不同实例的含义。可以为每个用户定义一个文件管理器。例如使用carrierwave,您可以定义自定义存储目录:

    # mount uploader in user class
    class User
      mount_uploader :file, UserUploader
    end
    
    # define user uploader
    class UserUploader < CarrierWave::Uploader::Base
      def store_dir
        # model = user object as the uploader
        # is mounted in the user class
        'public/uploads/#{model.id}'
      end
    end
    

    我希望你有一个想法!

    【讨论】:

    • 所以你的意思是我应该使用文件作为资源?或文件作为资源? :P 当我将它用作资源时,我可以使用索引函数来获取带有索引的目录的内容;)
    • 对于不同的实例,我的意思是当我只使用文件作为资源时,我必须将当前目录保存在会话变量中。这将使在一个会话中拥有不同的管理器实例变得更加困难......感谢自定义存储目录的提示;)
    • 我的意思是“文件即资源”只是 Rails 路由中的 resource definition。文件基本上只不过是一种资源。你能举例说明不同的情况吗?您是否正在尝试构建类似 FTP 客户端的东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2013-10-08
    • 2011-10-18
    相关资源
    最近更新 更多