Ruby on rails 让用户在Rails应用程序中下载CSV文件
我有一个CSV文件存储在我的S3存储桶中,我想在Rails中添加一个方法,以便用户可以单击按钮下载该文件。在控制器中,我放置了以下内容Ruby on rails 让用户在Rails应用程序中下载CSV文件,ruby-on-rails,Ruby On Rails,我有一个CSV文件存储在我的S3存储桶中,我想在Rails中添加一个方法,以便用户可以单击按钮下载该文件。在控制器中,我放置了以下内容 def s3_downloader(bucketName, key, localPath) # (1) Create S3 object s3 = Aws::S3::Resource.new(region: 'us-east-2') # (2) Create the source object sourceObj = s3.buc
def s3_downloader(bucketName, key, localPath)
# (1) Create S3 object
s3 = Aws::S3::Resource.new(region: 'us-east-2')
# (2) Create the source object
sourceObj = s3.bucket(bucketName).object(key)
# (3) Download the file
sourceObj.get(response_target: localPath)
puts "s3://#{bucketName}/#{key} has been downloaded to #{localPath}"
end
这是我从
我应该把什么作为localPath?我尝试了一些简单的方法:
s3_downloader(Rails.application.secrets.s3_bucket_name, "Product_csv_file_sample.csv", "/Downloads")
但我得到了一个错误:
Errno::EACCES (Permission denied @ rb_sysopen - /Downloads)
2.6.3 :040 > s3_downloader(Rails.application.secrets.s3_bucket_name, "Product_csv_file_sample.csv", "/Downloads")
Traceback (most recent call last):
3: from (irb):40
2: from (irb):40:in `rescue in irb_binding'
1: from (irb):30:in `s3_downloader'
另外,我如何确保用户在Mac或Windows上,localPath仍然有效
downloads文件夹中的chmod'chown'返回:
usage: chmod [-fhv] [-R [-H | -L | -P]] [-a | +a | =a [i][# [ n]]] mode|entry file ...
chmod [-fhv] [-R [-H | -L | -P]] [-E | -C | -N | -i | -I] file ...
根据您发布的错误,运行
rails服务器的用户似乎没有写入/读取Downloads
目录的权限。我会检查那里,并根据需要使用chmod
`chown`来修复它们。根据您发布的错误,运行rails服务器的用户似乎没有写入/读取下载
目录的权限。我会检查那里,并在必要时使用chmod
'chown`.哪里是“/Downloads”指的是什么?在客户端还是服务器上?您不需要在客户端上指定文件夹。看起来您正在尝试访问服务器上的文件夹。不是用文件响应,而是让浏览器将其放置在默认下载位置。嗨,我想我是在指示localPath作为下载文件的文件夹。请推荐什么?在将文件发送到客户端之前,可以创建一个临时路径来存储文件。例如“/#{Rails.root}/tmp/downloads/#{some_id_here}/”
还研究了如何使用“/downloads”所指的文件响应web请求?在客户端还是服务器上?您不需要在客户端上指定文件夹。看起来您正在尝试访问服务器上的文件夹。不是用文件响应,而是让浏览器将其放置在默认下载位置。嗨,我想我是在指示localPath作为下载文件的文件夹。请推荐什么?在将文件发送到客户端之前,可以创建一个临时路径来存储文件。例如“/#{Rails.root}/tmp/downloads/#{some_id_here}/”
还研究了如何使用文件响应web请求我修改了问题以添加chmodI的结果修改了问题以添加chmod的结果