在我的 Rails 控制器中,我有这条线
send_file("#{Rails.root}/test/image.png")
我希望我的网页有一个文本框,用户可以填写一个目录,例如C:/OldPictures/All/
,然后当用户单击调用控制器的链接时,它还会读取文本框中的目录,并将文件下载image.png
到指定的目录。我能做到吗?
在我的 Rails 控制器中,我有这条线
send_file("#{Rails.root}/test/image.png")
我希望我的网页有一个文本框,用户可以填写一个目录,例如C:/OldPictures/All/
,然后当用户单击调用控制器的链接时,它还会读取文本框中的目录,并将文件下载image.png
到指定的目录。我能做到吗?
不。
出于安全原因,Web 服务器(以及一般的 Web 代码,包括 JavaScript)无法查看客户端的文件系统或指定文件下载到的位置。您可以为下载建议一个文件名,仅此而已(如果您想将其设置为文件在服务器上的名称以外的名称,请使用该:filename
选项)。send_file
下载位置由浏览器、操作系统和用户的某种组合决定。
简短的回答,是的
长答案,由于各种原因,我们通常不允许客户端应用程序了解服务器上的文件位置。在处理 Web 应用程序时,用户应该与文件实际物理存储的位置“解耦”
现在看代码:
<form action="your_action_url" method="get" >
<input name="location" type="text" />
...
</form>
同时,在您的控制器中
send_file(File.join(params[:location], "image.png"))