2009-07-31 4 views
1

J'ai une application rails qui génère des fichiers Office ouverts, et j'ai un service à un autre endroit qui convertira ces fichiers open office en fichiers Microsoft Office. Je voudrais avoir une action de contrôleur qui enverra le dossier de bureau ouvert au convertisseur, puis servira le dossier de Microsoft Office retourné à l'utilisateur. comment pourrais-je faire ça?exposer des fichiers à partir d'un service via une application rails

C

Répondre

3

Découvrez

send_file @file.path, :x_sendfile => true 

à apidock. Ceci vous permet de servir les fichiers du système de fichiers avec l'authentification des rails, mais le service du fichier réel passera par votre module apache/lighttd et ne bloquera pas un processus de rails.

En ce qui concerne la récupération du document MS Office, vous souhaiterez probablement que le service appelle une action différente, qui indique à l'application de votre rail de télécharger le nouveau document.

class MyController < ApplicationController 
    def get_new_document 
    unless params[:file_path].nil? or params[:server_uri].nil? 
     @new_document = Net::Http.get(params[:server_uri], params[:file_path]) 
     @new_document.save # save to filesystem 
    end 
    end 
end 
+0

Je dois mentionner ici 'send_data', car c'était ce dont j'avais besoin. Parfois, vous pouvez avoir les données brutes, auquel cas 'send_file' vous demanderait de créer un fichier temp. – Crisfole

0

x_sendfile n'est pas disponible si vous arrive d'utiliser nginx, si vous êtes, vous pouvez utiliser X-Accel-Redirect. Vous pouvez trouver plus d'informations ici:

http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/ 
Questions connexes