0

我正在尝试webmachine使用 PUT 将文件上传到资源。这个想法是用file_id.

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类型请求的示例,但不是多部分的。该文件不保存在服务器中,而是转换并发送到另一个服务进行存储。

4

1 回答 1

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]
于 2016-05-04T17:33:48.813 回答