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

War es hilfreich?

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/
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top