Aussetzen von Dateien von einem Dienst durch eine Rails-Anwendung
-
06-07-2019 - |
Frage
Ich habe eine Rails-Anwendung, die Open Office-Dateien erzeugt, und ich habe einen Dienst an einem anderen Ort, der diese Open Office-Dateien in Microsoft Office-Dateien konvertieren. Ich möchte eine Controller-Aktion haben, die die offene Office-Datei an den Wandler senden wird, dienen dann die Microsoft Office-Datei an den Benutzer zurückgegeben. Wie könnte ich das tun?
C
Lösung
Überprüfen Sie heraus
send_file @file.path, :x_sendfile => true
apidock .
Auf diese Weise können Sie Dateien aus dem Dateisystem mit Schienen-Authentifizierung dienen, aber die eigentliche Datei dient Ihre Apache / lighttd Modul durchlaufen und wird keine Schienen Prozess binden.
Soweit die MS Office-Dokument zurück bekommen, werden Sie wahrscheinlich wollen, dass der Dienst eine andere Aktion aufzurufen, die App Ihre Schienen sagt das neue Dokument zum Download bereit.
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
Andere Tipps
x_sendfile ist nicht verfügbar, wenn Sie werden mit nginx passieren, wenn Sie sind, können Sie X-Accel-Redirect verwenden. Sie können mehr Informationen finden Sie hier:
http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/