如何在 webmachine-ruby 中接受 PUT 多部分文件
How to accept a PUT multipart file in webmachine-ruby
我正在尝试使用 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 类型请求但不接受多部分请求的示例。文件不保存在服务器中,而是转换并发送到另一个服务进行存储。
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]
我正在尝试使用 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 类型请求但不接受多部分请求的示例。文件不保存在服务器中,而是转换并发送到另一个服务进行存储。
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]