remove rails ruby-on-rails ruby file-upload file-io

ruby-on-rails - remove - ruby on rails upload file



Cargar un archivo en Rails (2)

Soy nuevo en rails, y estoy escribiendo un sitio web RESTful usando la técnica CRUD. Hasta ahora, he creado tres páginas, todas las cuales permiten al usuario crear, editar y eliminar una fila de la base de datos. Sin embargo, mi cuarta página deberá incluir un formulario de archivo de carga, pero a) No sé cómo funciona el sistema de archivos con Rails, por lo que no sé dónde deben almacenarse los archivos. El archivo tendría alrededor de 100 kb y no se podría almacenar en el almacenamiento temporal porque se descargará constantemente. Yb) No sé cómo escribir en un archivo.

Sería genial si pudieras decirme cómo hacer lo que mencioné anteriormente: crear una entrada de carga en un formulario de entrada, y luego escribir el archivo en una ruta de archivo en un directorio separado.


Hay una buena joya especialmente para cargar archivos: carrierwave . Si la wiki no ayuda, hay un buen RailsCast sobre la mejor manera de usarlo. Resumiendo, hay un file tipo de campo en los formularios Rails, que invoca el cuadro de diálogo de carga de archivos. Puedes usarlo, pero la ''magia'' la realiza la gema carrierwave .

No sé a qué te refieres con "cómo escribir en un archivo", pero espero que este sea un buen comienzo.


Si bien hay muchas gemas que resuelven la carga de archivos muy bien (consulte https://www.ruby-toolbox.com/categories/rails_file_uploads para obtener una lista), Rails tiene ayudantes incorporados que facilitan la implementación de su propia solución.

Use file_field helper en su formulario, y rails maneja la carga por usted:

<%= form_for @person do |f| %> <%= f.file_field :picture %> <% end %>

Tendrás acceso en el controlador al archivo cargado de la siguiente manera:

uploaded_io = params[:person][:picture] File.open(Rails.root.join(''public'', ''uploads'', uploaded_io.original_filename), ''wb'') do |file| file.write(uploaded_io.read) end

Depende de la complejidad de lo que desea lograr, pero esto es totalmente suficiente para tareas de carga / descarga de archivos fáciles. Este ejemplo está tomado de las guías de rieles, puede ir allí para obtener más información: http://guides.rubyonrails.org/form_helpers.html#uploading-files