Carrierwave + Fog + S3删除文件而无需通过模型

时间:2014-11-21 02:47:33

标签: ruby-on-rails amazon-s3 carrierwave fog

我正在构建一个包含聊天组件的应用程序。该应用程序允许用户将文件上传到聊天室。聊天都是javascript,但我想使用Carrierwave上传,因为我在应用程序的其他地方使用它。我正在通过AJAX处理上传,以便我可以进入Rails并让Carrierwave接管。

我已经能够通过聊天将文件成功上传到我的S3存储桶中的正确位置。我无法弄清楚的是如何删除文件。这是我上传文件的代码 - 这是从AJAX调用命中的路径调用的方法。

def upload
  file = File.open(params[:file_0].tempfile)
  uploader = ChatUploader.new
  uploader.store!(file)
end

Carrierwave几乎没有关于如何在不通过模型的情况下上传文件的文档,基本上没有关于如何在不经过模型的情况下删除文件的文档。我认为这是可能的 - 我只需要知道该怎么称呼。所以我想我的问题是如何删除文件?

更新(11/23)

我使用以下方法获取了从S3保存和删除文件的代码:

# code to save the file
def upload
    file = File.open(params[:file_0].tempfile)
    uploader = ChatUploader.new
    uploader.store!(file)
    uploader.store_path()
end

# code to remove files
def remove_file
    file = params[:file]
    uploader = ChatUploader.new
    uploader.retrieve_from_store!(file)
    uploader.remove!
end

我现在唯一的问题是上传文件的文件名不正确。它使用“RackMultipart”保存所有文件,然后是一些看起来像日期,时间和标识符的数字? (例如:RackMultipart20141123-17740-1tq4j1g)需要尝试使用原始文件名加上可能是唯一性的时间戳。

我认为这与这两行有关:

file = File.open(params[:file_0].tempfile)

uploader.store!(file)

0 个答案:

没有答案