Obtendo nome de arquivo antes de salvar em ActiveStorage - Rails 5.2.1

votos
0

Eu estou tentando obter o nome do arquivo enviado por um usuário antes ActiveStorage passa a salvá-lo. A forma é gerada utilizando form_withe é mostrada abaixo:

<%= form_with model: upload do |form| %>
  <div class=>
    <%= form.file_field :files, multiple: true, direct_upload: true, required: true %>
    <%= form.label :files, '', class: 'icon ion-ios-cloud-upload' do %>
      <span>click the icon to select files</span>
    <% end %>

    <div class=actions>
      <%= form.submit Upload, class: btn btn-primary %>
    </div>
 </div>
<% end %>

Eu tentei aceder params[:upload][files]e chamando .original_filenamesobre ele, como descrito aqui , mas eu recebo o erro NoMethodError: undefined method `original_filename' for #<String:0x007fac77fd18c8>.

O arquivo não voltar como uma string quando eu inspecionar os parâmetros, assim como faço para obter o nome do arquivo ou como faço para obter original_filenamea trabalhar?

Publicado 27/11/2018 em 18:12
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Eu estava finalmente capaz de obter o nome do arquivo, fazendo file.blob.filenamedepois que o arquivo foi anexado.

Respondeu 27/11/2018 em 19:48
fonte usuário

votos
0

Você precisa adicionar multipart: trueao seu formulário.

https://guides.rubyonrails.org/form_helpers.html#uploading-files

A outra coisa é que se você tiver vários arquivos que você vai ter vários nomes de arquivos.

params[:upload][files].each do |file|
  file.original_filename
end
Respondeu 27/11/2018 em 19:16
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more