我正在构建一个应用程序,用户可以上传csv文件以将数据加载到我们的平台上。我有一个表单,允许用户上传文件和一个方法,将文件保存在指定的文件夹中。我想将user_id附加到文件名。我该怎么做?
我的表格:
<%= form_tag import_listings_path, multipart: true do %>
<%= file_field_tag :my_file %>
<%= hidden_field_tag :user_id, current_user.id %>
<%= submit_tag "Import CSV" %>
<% end %>
我的控制器方法:
def import
tmp = params[:my_file].tempfile
file = File.join("public", params[:my_file].original_filename)
FileUtils.cp tmp.path, file
end
例如,如果用户上传test.csv且其user_id为20.我希望新文件名为test20.csv
答案 0 :(得分:-1)
有点难看,但这应该可以胜任...基本上提取文件扩展名(获取&#39;。&#39;之后的最后一个字符串),附加用户ID并添加扩展名:
x = params[:my_file].original_filename.split('.')
x[x.length - 2] += params[:user_id]
file = File.join("public", x.join('.'))