ruby-on-rails - 如何在 ActiveStorage Rails 5.2 实现中检索源文件名?
问题描述
尽管我在这里发现了同样的问题,但我可以上传文件,但我无法检索原始文件名。
从 BusinessObject 中,我创建了一个加载文件的 Scope:
app/views/scopes/_form.html.erb
<%= form_with model: [@business_object, @scope], html: {id: "edit_form"} do |f| %>
<!-- apply template to Scope -->
<%= render partial: "shared/object_definition_form", locals: {this_object: @scope, f: f} %>
<!-- additional fields -->
<div class="row">
<div class="col-md-2 text-right"><%= t('FileUpload') %>:
</div>
<div class="col-md-10 field"><%= f.file_field :uploaded_file, class: "btn btn-primary" %>
</div>
</div>
<%= f.submit "Validate" %>
<% end %>
范围控制器按预期附加文件,但它还应将文件名存储在 resource_file 字段中:
app/controllers/scopes_controller.rb
def update
### Scope retrieved by Callback function
@scope.updated_by = current_login
if params.has_key?(:uploaded_file)
@scope.uploaded_file.purge
@scope.uploaded_file.attach(params[:uploaded_file])
@scope.resource_file = self.uploaded_file.blob.filename
end
respond_to do |format|
if @scope.update_attributes(scope_params)
format.html { redirect_to @scope, notice: 'Scope was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @scope.errors, status: :unprocessable_entity }
end
end
end
我尝试了几种方法来获取原始文件名,但无法做到。任何想法 ?谢谢!
解决方案
附加文件后,您可以通过以下方式检索原始文件名:
@scope.uploaded_file.filename
推荐阅读
- php - 我使用 php 版本 5.2。该脚本在 000webhost 中运行,但是当我使用 yahoo 网络主机时它不起作用
- omnet++ - 静脉模拟,根据距离改变比特率
- node.js - 如何在 Dialogflow 回退意图中访问以前的对话详细信息
- c++ - *初学者* C++基础计算器
- mysql - 从 sql developer 转移到 mysql
- c - 如何在 C 中返回 long 的结束数字(特别是当它们为 0 时)
- javascript - 在使用 Javascript 或 HTML 提交之前修改输入值
- angular - 无法在模态中动态加载或延迟加载组件
- ruby - Browsermob Proxy + Watir 没有连续捕获流量
- javascript - Express:为定义的路由提供静态文件