2016-05-03 4 views
0

Ich versuche, eine Datei auf eine webmachine Ressource mit PUT hochladen. Die Idee ist, die Vorlagenressource mit einem file_id zu aktualisieren.Wie akzeptiert man eine mehrteilige PUT-Datei in webmachine-ruby

module App::Resources 
    class UpdateTemplateResource < TemplateResource 

    def allowed_methods 
     %W(PUT) 
    end 

    def content_types_accepted 
     # What to do here? 
    end 

    private 

    def template_id 
     request.path_info[:id] 
    end 

    def template 
     @template ||= ::App::Models::Template.find_latest_version_by_guid(id) 
    end 
    end 
end 

Ich habe Beispiele fand eine json Typ Anfrage zu akzeptieren, aber nicht multipart. Die Datei wird nicht auf dem Server gespeichert, sondern konvertiert und zum Speichern an einen anderen Dienst gesendet.

+0

Sind Sie mit AJAX um die Datei zu laden? –

+0

@GustavoRubio Ja, ich bin. – gmuraleekrishna

Antwort

0

Das Webmachine::Request Objekt hat Körper enthalten, die im Wesentlichen die mehrteilige Anfrage mit Grenzen ist. Wenn wir wissen, welche Art von Datei gesendet wird, könnten wir sie analysieren.

Die Textgrenze enthält den Inhaltstyp, den Dateinamen und den zugehörigen Parameter. Dann startet die eigentliche Datei.

Wenn JSON

lines = [] 
request.body.to_io.each {|l| lines << l if l =~ /\[/ } 
json = JSON.parse(lines[0]) 

Wenn pdf-Datei

lines = request.body.to_io.read 
pdf_as_string = lines.match(/^(\%PDF-)(.*\s)*(\%\%EOF\s)$/)[0] 
Verwandte Themen