gpt4 book ai didi

ruby-on-rails - 如何使用 ruby​​ 读取表单数据

转载 作者:可可西里 更新时间:2023-11-01 16:35:23 26 4
gpt4 key购买 nike

在我的 Controller 中,request.body.read 的结果是:

=============
--AJAX-----------------------1267183973160
Content-Disposition: form-data; name="1261400603_page_white_word.png"; filename="1261400603_page_white_word.png"
Content-Type: application/octet-stream

thefile
--AJAX-----------------------1267183973160
Content-Disposition: form-data; name="1261400536_page_white_excel.png"; filename="1261400536_page_white_excel.png"
Content-Type: application/octet-stream

thefile
--AJAX-----------------------1267183973160--
=============

它包含 n 个表单数据(在我的例子中是 2 个),我的目标是循环遍历 n 个表单数据并获取数据 namefilename 和一个上传的文件,在我的示例中,我用 thefile 替换了二进制数据。

这里是params hash的内容

{"action"=>"create", "controller"=>"photos", "1265144945_395.jpg"=>#<File:/var/folders/BT/BTpdsWBkF6myaI-sl3+1NU+++TI/-Tmp-/RackMultipart20100226-273-1un364r-0>}

干杯

最佳答案

您是否考虑过使用 paperclipattachment_fu ?它们经过实战检验,比使用 request.body 做得更好。在任何情况下,您都可以按如下方式解析 request.body,但这不是最佳解决方案。

inputs =  request.body.read.split(/--ajax-+\d+-*/mi)

inputs.each do |input|
input.scan(/(.*)[\n\r]{2,4}(.*)/m) do |header, file|
header.scan(/name=["'](.*)["'];\s+filename=["'](.*)["']/) do |name, filename|
puts name
puts filename
end
puts file
end
end

编辑:所以参数解析可能是 Rack::Utils::Multipart.parse_mulitpart 的工作.人们可能应该重用它的来源中的正则表达式来更稳健地解析它。此外,看起来 rack 正在为您创建一个 tmp 文件。你能检查那个文件的内容吗?

关于ruby-on-rails - 如何使用 ruby​​ 读取表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2341407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com