如何在webmachineruby中接受PUT多部分文件



我正在尝试使用PUT将文件上载到webmachine资源。其思想是使用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类型的请求,但不能接受multipart。该文件未保存在服务器中,但已转换并发送到另一个服务进行存储。

Webmachine::Request对象包含body,它本质上是带有边界的多部分请求。如果我们知道发送的是什么类型的文件,我们就可以解析它

正文边界包括内容类型、文件名和与其关联的参数。然后启动实际文件。

如果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)*(%%EOFs)$/)[0]

相关内容

  • 没有找到相关文章

最新更新