我有两种模式:组织和绘图。他们有1:1的关系。绘图包含两个变量:organization_id
和file_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
的正确性。在这里,我想保存已保存文件的存储桶路径。但我想知道这是否是安全的方法(或者这条路径应该是哈希)?这如何与载波上传器一起工作;它会自动散列吗?我不希望任何人能够浏览到该文件并打开它。