2016-11-18 1 views
0

Ich versuche, eine einfache href-Link zum Herunterladen einer CSV-Datei aus meinem Öffentlichen Ordner, aber wenn ich es nur sagt "Failed - No File", aber ich weiß Alle anderen Pfade zu meinem Öffentlichen Ordner funktionieren, weil alle Bilder geladen werden. Ich fühle mich als würde ich etwas vermissen, von dem ich nichts weiß. Ich habe den öffentlichen Ordner wie so gesetzt:Download CSV-Datei aus dem öffentlichen Ordner sagt fehlgeschlagen keine Datei

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

und die href ist wie folgt:

<a href="/csv_file/<%[email protected]%>" download="updated_<%[email protected]%>" style="text-align: center;" download>Download</a> 

Ich hoffe, dass diese genügend Informationen. Danke

+0

Passt das generierte href zu dem, was Sie erwarten? Sie verwenden in Ihrer Route auch nicht/public. –

+0

Ja, der Text ist korrekt, der Name der heruntergeladenen Datei (obwohl keine Datei) korrekt ist und der angezeigte Pfad korrekt ist, wenn Sie den Mauszeiger über den Link bewegen. – Wazza

+0

Was ist das generierte HTML? Ist '@ file.name' gültig? Bilder laden sagt uns nicht viel, es sei denn, Sie verwenden Variablen, um ihre Namen zu definieren. Bitte lesen Sie "[mcve]" und geben Sie uns ein bisschen mehr Details. –

Antwort

-1

File.dirname (_ _ FILE _ _) gibt den relativen Pfad zurück. Verwenden Sie stattdessen File.expand_path (_ _ FILE _ _).

+0

Ich habe Ihren Vorschlag versucht, aber es gibt das gleiche Ergebnis. Thanks tho – Wazza

+0

Der Wechsel von einem relativen Pfad zu einem vollständigen Pfad sollte keinen Unterschied machen, besonders wenn es um das Versenden von Dateien geht. –

0

Beispielprojektstruktur.

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

Ich habe lokale Variablen einrichten Projekt Weglassen (in Ihrem Fall @file usw.)

#app.rb 
require 'sinatra' 

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

get '/' do 
    erb :index 
end 

Ansicht Datei

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

Wenn auf Download-Link klicken, was ich ist,

enter image description here

Was Sie tun sollten, ist, die endgültige URL auf Ihre Sicht zu überprüfen. Teilen Sie auch den Routenblock.

Verwandte Themen