我正在使用Rails 4 Ruby 2.1.1
我需要更改我的:url,:path,:default所以我可以访问controllers目录中的example-data.csv文件.目前它正在存储我的example_data.csv文件public/origin/example_data.csv
.但我希望我的example_data.csv文件保存在/ controllers/original目录中.
这就是我到目前为止所拥有的.
has_attached_file :
csvdata, :url => "/controllers/original/:style/:basename.:extension",
:path => ":rails_root/controllers/original/:style/:basename.:extension",
:default_url => "/controllers/original/example_data.csv"
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它不会将我的代码放在controllers目录中.
Kir*_*rat 30
Paperclip
允许您在首选位置上传文件.您可以修改它的选项,例如:url
,:path
,:default_url
你的愿望.
在我们进一步讨论之前,让我告诉您这些选项的用途:
:url - The full URL of where the attachment is publicly accessible.
:path - The files that are assigned as attachments are, by default, placed in the directory specified by this option.
:default_url - The URL that will be returned if there is no attachment assigned.
:styles - A hash of thumbnail styles with geometries. If you need copies of uploaded files with particular dimensions then specify them here.
Run Code Online (Sandbox Code Playgroud)
您的第一个要求如下:
我需要更改我的:url,:path,:default_url所以我可以访问controllers目录中的example-data.csv文件.
是的,它可能.您当前的配置如下所示,只需正常工作,无需任何更改.
has_attached_file :csvdata,
:url => "/controllers/original/:style/:basename.:extension",
:path => ":rails_root/controllers/original/:style/:basename.:extension",
:default_url => "/controllers/original/example_data.csv"
Run Code Online (Sandbox Code Playgroud)
但是这里有一些问题我想强调一下.通过上述设置,无论何时上传文件,它都将存储在application_folder/controllers/original/original目录下.路径/原始的最后一部分是由选项中/:style
指定的:path
.由于您没有:styles
为附件指定任何选项,因此original
将仅创建默认样式ie .请注意,controllers文件夹位于应用程序根级别,这是一个不可公开访问的文件夹.
只有在上传的文件公开文件夹(及其后代)都可以通过Web浏览器访问.如果您不打算在视图中的任何位置显示上传的文件和/或只是需要它进行某些后台处理,那么,您当前的配置不需要任何更改.它会很好地工作.
如果这是您打算实现的目标,则无需采取进一步措施.
但是,如果您计划在Web应用程序中显示或访问上载的文件,则需要将其放在public
可通过浏览器访问的文件夹中.在这种情况下,您的代码需要进行一些更改.
## Update current configuration as below
has_attached_file :csvdata,
:url => "/controllers/:style/:basename.:extension",
:path => ":rails_root/public/controllers/:style/:basename.:extension",
:default_url => "/controllers/:style/example_data.csv"
Run Code Online (Sandbox Code Playgroud)
注意:我/original
从路径中删除了:style
创建original
文件夹.否则,文件夹将是/controllers/original/original/..
通过上述设置,无论何时上传文件,它都将存储在application_folder/public/controllers/original目录下.您可以通过@model_instance.csvdata.url
视图中的简单调用轻松访问上传的文件.例如,根据您的问题,您要example_data.csv
在视图中上传一个名为的文件,您可以将其用作:
## Replace @model_instance with Model instance (contains `csvdata` attachment)
<%= link_to "Example Data", @model_instance.csvdata.url %>
Run Code Online (Sandbox Code Playgroud)
这将生成上传文件的可点击链接:
<a href="/controllers/original/example_data.csv?12345678">Example Data</a>
Run Code Online (Sandbox Code Playgroud)
注意: ?12345678
是rails附加的随机种子.
:default_url => "/controllers/:style/example_data.csv"
Run Code Online (Sandbox Code Playgroud)
:default_url
在配置中指定选项始终是一个好习惯.原因是如果用户在创建记录时没有上传文件但后来尝试访问uploaded file
该记录,那么他们将被定向到设置的链接default_url
.另请注意,对于此特定记录,所有attachment
相关列都将设置为nil
.
另外,我很困惑,example_data.csv
当你想在应用程序中上传相同的文件时,为什么你想要default_url指向.标准方法是使用名为的默认文件missing.csv
或missing.png
与上载文件无关的默认文件.请记住放置missing.csv
或missing.png
放在/controllers/original/
文件夹中,即:default_url
路径.否则,点击链接后会出现错误.
归档时间: |
|
查看次数: |
11858 次 |
最近记录: |