【问题标题】:Downloading .csv file from public folder says failed no file从公用文件夹下载 .csv 文件说没有文件失败
【发布时间】:2016-11-30 03:11:14
【问题描述】:

我正在尝试设置一个简单的 href 链接以从我的公用文件夹下载 .csv 文件,但单击它时只显示“失败 - 无文件”,但我知道我的公用文件夹的所有其他路径都有效,因为所有图像加载。我觉得我错过了一些我不知道的东西。我已经像这样设置公用文件夹:

set :public_folder, File.dirname(__FILE__) + "/public"

href如下:

<a href="/csv_file/<%=@file.name%>" download="updated_<%=@file.name%>" style="text-align: center;" download>Download</a>

我希望这是足够的信息。谢谢

【问题讨论】:

  • 生成的 href 是否符合您的预期?您也没有在您的路线中使用 /public。
  • 是的,文字正确,下载的文件名(虽然没有文件)正确,鼠标悬停在链接上时显示的路径正确。
  • 生成的 HTML 是什么? @file.name 有效吗?除非您也使用变量来定义它们的名称,否则图像加载并不能告诉我们太多。请阅读“minimal reproducible example”并为我们提供更多详细信息。
  • 嗨,对不起,这个应用程序的重量很轻,它只是更新带有水印的图像和带有图像 url 的 csv 文件,我只是不明白为什么它不起作用。它在这里 github.com/wrumble/SilkFredApp 在测试分支上

标签: html ruby sinatra


【解决方案1】:

示例项目结构。

$ tree
.
├── app.rb
├── Gemfile
├── public
│   └── lorem.csv
└── views
    └── index.erb

我已经设置了省略局部变量的项目(在你的情况下是 @file 等)

#app.rb
require 'sinatra'

set :public_folder, File.dirname(__FILE__) + "/public"

get '/' do
  erb :index
end

查看文件

#index.erb
<a href="/lorem.csv" style="text-align: center;" download>Download</a>

当点击下载链接时,我得到的是,

您应该做的是,检查您视图中的最终 url。也请分享路线块。

【讨论】:

    【解决方案2】:

    File.dirname(__FILE__) 返回相对路径。尝试改用 File.expand_path(__FILE__)。

    【讨论】:

    • 我尝试了您的建议,但结果相同。谢谢你
    • 从相对路径切换到完整路径应该没有什么不同,尤其是在处理提供文件时。
    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2018-10-17
    • 2017-02-10
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多