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