如何通过Rails管理中的自定义操作下载文件。由于我发送的文件是ZIP格式,但在下载后,它会打开一个嵌套的zip文件,在开头创建另一个zip文件然后继续。
所以基本上这是我的自定义操作,我调用我的服务,它将通过gem rubyzip
创建一个zip文件,并且我发送创建的zip文件的file_path是在我的本地机器(例如file_path为"#{Rails.root} /abc.zip")
else
# all your code that does the work
import_params = params.require(:documents)
.permit(:email)
if import_params[:email].present?
@result = Download::Forms.call(mail_id: import_params[:email])
if @result[:status]
flash.now[:notice] = 'File Downloaded'
send_file(
@result[:file_path],
filename: @result[:file_name],
type: "application/zip"
)
else
flash.now[:error] = "Failed to Download because #{@result[:error_message]}"
end
else
flash.now[:notice] = 'Please Enter Email Address'
end
@result
end
因为我最后也发送了@result
,所以我也可以尝试使用link_to
方法下载文件,但都是徒劳的。我正在使用 Rails 4.2.6
有关文件类型的更多信息是我尝试了一个txt文件和一个pdf文件来检查它们是否正确下载但是它们下载的结果相同但是它们不适合作为txt文件没有任何内容,pdf无法打开。
使用自定义操作名称下载文件,而不是从文件名下载,如果我从任何简单的操作下载文件,则该文件名是正确的命名。
任何帮助都将非常感激。