2016-05-03 8 views
0

PUTを使用してwebmachineリソースにファイルをアップロードしようとしています。テンプレートのリソースをfile_idに更新することです。webmachine-rubyでPUTマルチパートファイルを受け入れる方法

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 

私はjsonタイプの要求を受け入れますが、マルチパートではないために例を発見しました。ファイルはサーバーに保存されず、変換され、別のサービスに送信されて保存されます。

+0

ファイルをアップロードするためにAJAXを使用していますか? –

+0

@GustavoRubioはい、ありがとうございます。 – gmuraleekrishna

答えて

0

Webmachine::Requestオブジェクトには、本質的に境界を持つマルチパートリクエストであるボディが含まれています。送信されているファイルの種類がわかっている場合、そのファイルを解析できます。

ボディの境界には、コンテンツタイプ、ファイル名、およびそれに関連付けられたパラメータが含まれます。次に、実際のファイルを開始します。

JSONの場合

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

場合はPDFファイル

lines = request.body.to_io.read 
pdf_as_string = lines.match(/^(\%PDF-)(.*\s)*(\%\%EOF\s)$/)[0] 
関連する問題