2

在我的 Rails 控制器中,我有这条线

send_file("#{Rails.root}/test/image.png")

我希望我的网页有一个文本框,用户可以填写一个目录,例如C:/OldPictures/All/,然后当用户单击调用控制器的链接时,它还会读取文本框中的目录,并将文件下载image.png到指定的目录。我能做到吗?

4

2 回答 2

4

不。

出于安全原因,Web 服务器(以及一般的 Web 代码,包括 JavaScript)无法查看客户端的文件系统或指定文件下载到的位置。您可以为下载建议一个文件名,仅此而已(如果您想将其设置为文件在服务器上的名称以外的名称,请使用该:filename选项)。send_file下载位置由浏览器、操作系统和用户的某种组合决定。

于 2012-11-04T22:00:25.607 回答
1

简短的回答,是的

长答案,由于各种原因,我们通常不允许客户端应用程序了解服务器上的文件位置。在处理 Web 应用程序时,用户应该与文件实际物理存储的位置“解耦”

现在看代码:

<form action="your_action_url" method="get" >
  <input name="location" type="text" />
  ...
</form>

同时,在您的控制器中

send_file(File.join(params[:location], "image.png"))
于 2012-11-04T21:44:43.803 回答