如何存储S3存储桶上传文件的路径?

时间:2015-05-23 08:47:53

标签: ruby-on-rails ruby ruby-on-rails-4 amazon-web-services amazon-s3

我有两种模式:组织和绘图。他们有1:1的关系。绘图包含两个变量:organization_idfile_path

在注册新组织时,我让我的Rails应用程序自动将该组织的标准文件复制到我的S3存储桶。 Drawing模型中的File_path应该包含存储文件的路径的字符串。

对于组织的控制器,我added引用了方法upload_file,我已将其包含在绘图模型中。

控制器:

def create
  @organization = Organization.new(organizationnew_params)
  if @organization.save
    Drawing.upload_file(@organization.id)
    redirect_to root_url
  end
end

型号:

def self.upload_file(id)
  s3 = Aws::S3::Resource.new(
          credentials: Aws::Credentials.new(ENV['S3_ACCESS_KEY'], ENV['S3_SECRET_KEY']),
          region: ENV['AWS_REGION']
          )
  xmlfile = 'app/assets/other/graph.xml'
  key = "uploads/#{id}/xml-#{id}.xml"
  obj = s3.bucket('mybucketname').object(key)
  obj.upload_file(xmlfile)
  Conceptmap.create!(organization_id: id, xml_file: obj.public_url)
end

问题:我的问题涉及最后一行xml_file: obj.public_url的正确性。在这里,我想保存已保存文件的存储桶路径。但我想知道这是否是安全的方法(或者这条路径应该是哈希)?这如何与载波上传器一起工作;它会自动散列吗?我不希望任何人能够浏览到该文件并打开它。

0 个答案:

没有答案