2010-10-10 6 views
0

Je suis encore relativement nouveau sur les rails, mais j'ai déjà téléchargé des fichiers. J'essaye d'implémenter le téléchargement très basique de dossier - rien de fantaisie, juste télécharge le dossier, l'enregistre, et en fais un disque. Voici donc ma méthode pour enregistrer le fichier:ne peut pas écrire les fichiers téléchargés dans les rails

def self.save(upload,name) 
    directory='public/uploads' 
    ext=File.extname(upload.original_filename) 
    path=File.join(directory, "#{name}#{ext}") 
    File.open(path,'wb') { |f| f.write(upload.read) } 
end 

Le fichier est apparemment valide, comme extname() obtient l'extension correcte. Le nouveau fichier est créé au bon endroit. Mais d'une manière ou d'une autre, l'écriture échoue, car le fichier est toujours vide. Peu importe quel type de fichier j'utilise. Qu'est-ce qui pourrait mal tourner? J'utilise Rails 3.0 si c'est important.

+0

Quel système d'exploitation utilisez-vous? Aussi, je suppose que c'est dans votre environnement de développement seulement? –

+0

Ubuntu 10.10, et oui. – herpderp

Répondre

1

Essayez de faire File.open(path,'wb') { |f| f.write(upload.read); f.close }

Le tampon IO est probablement pas bouffées de chaleur, mais la fermeture du dossier devrait rincer.

En outre, je recommande fortement d'utiliser un plugin tel que paperclip pour le téléchargement de fichiers, simplement parce que les téléchargements de fichiers peuvent être ennuyeux à gérer, et paperclip fournit un très bon moyen de résumer la plupart de ces conventions. quelques colonnes et faire model.upload = params[:file].

Questions connexes