2017-05-24 1 views
0

J'essaie d'utiliser smarter_csv pour analyser les fichiers CSV avec mon application Rails. Mais la documentation explique seulement comment analyser un fichier qui appartient déjà à l'application.Comment puis-je analyser un fichier CSV local avec Rails?

Je souhaite analyser un fichier stocké localement sur mon ordinateur. Je pense donc que je dois télécharger le fichier, l'analyser, puis le supprimer.

C'est jusqu'où je suis arrivé:

<%= form_tag({action: :upload}, multipart: true) do %> 
    <%= file_field :csv %> 
    <%= submit_tag 'Submit' %> 
<% end %> 

Alors comment puis-je référencer et utiliser le fichier téléchargé dans mon action de contrôleur?

def upload 
    #save file temporarily to app 
    filename = #filename 
    #parse file with smarter_csv 
    #File.delete(filename) 
end 

Répondre

1

Pour obtenir le chemin du fichier en tant que chaîne vous devez effectuer les opérations suivantes:

filename = params[:csv].path 

comme params [:] csv est un objet UploadedFile. Vous n'avez pas besoin de gérer vous-même le fichier temporaire, c'est-à-dire de le stocker et de le supprimer. Rails ferait cela pour vous. Selon la documentation:

Les fichiers téléchargés sont des fichiers temporaires dont la durée de vie est d'une demande. Lorsque l'objet est finalisé, Ruby supprime le fichier, il n'est donc pas nécessaire de les nettoyer avec une tâche de maintenance séparée.

+0

Je vois. Est-il possible d'ajouter définitivement le fichier à un chemin donné dans l'application? –