2008-12-24 2 views
3

Je construis une application rails pour tester notre produit phare (également basé sur le web). Le problème est qu'une partie du test nécessite l'utilisation de l'interface Web de l'application de production pour télécharger des fichiers. Donc ce que je dois faire, c'est que l'application rails télécharge ces fichiers dans l'application de production (pas sur les rails). Existe-t-il un moyen pour que les rails affichent le fichier dans l'application de production (comme le navigateur publie le fichier dans l'application de production)?télécharger un fichier sur un site web avec ruby ​​/ rails

Répondre

0

Vous voudrez peut-être consulter le plugin Paperclip. Très bien pour télécharger des images. Peut-être travailler pour d'autres formats aussi.

7

Si vous avez juste besoin de télécharger des fichiers, je pense qu'il est inutile d'utiliser un plugin pour cela. Le téléchargement de fichier est très, très simple.

class Upload < ActiveRecord::Base 
    before_create :set_filename 
    after_create :store_file 
    after_destroy :delete_file 

    validates_presence_of :uploaded_file 

    attr_accessor :uploaded_file 

    def link 
    "/uploads/#{CGI.escape(filename)}" 
    end 

    private 

    def store_file 
    File.open(file_storage_location, 'w') do |f| 
     f.write uploaded_file.read 
    end 
    end 

    def delete_file 
    File.delete(file_storage_location) 
    end 

    def file_storage_location 
    File.join(Rails.root, 'public', 'uploads', filename) 
    end 

    def set_filename 
    self.filename = random_prefix + uploaded_file.original_filename 
    end 

    def random_prefix 
    Digest::SHA1.hexdigest(Time.now.to_s.split(//).sort_by {rand}.join) 
    end 
end 

Ensuite, votre formulaire peut ressembler à ceci:

<% form_for @upload, :multipart => true do |f| %> 
    <%= f.file_field :uploaded_file %> 
    <%= f.submit "Upload file" %> 
<% end %> 

Je pense que le code est à peu près explicite, je ne vais pas l'expliquer;)

Questions connexes