Rob*_*rto 2 ruby file-upload sinatra
我正在编写一个简单的Sinatra应用程序,但是在读取文件时<input type="file" multiple />没有让Rack抛出一些问题NoMethodError: undefined method 'bytesize' for (Hash).
表单的写法如下:
<form action="/upload" enctype="multipart/form-data" method="post">
<input type="file" name="images[]" multiple />
</form>
Run Code Online (Sandbox Code Playgroud)
但是,在我的任何代码执行之前,接收端会抛出上述错误,也就是说,Rack没有正确解析input[name=images].我发送的表格不正确吗?如果我放下括号[],那么只发送最后一个文件(很多),但我觉得我可能会遗漏一些东西......
只是为了澄清:这是Sinatra v1.4.3和Rack v1.5.2,后者是抛出异常的那个.在这里完全回溯.
让我离开的唯一一件事是你不使用POST方法 - 也许你的问题与此有关.无论如何,以下代码对我来说非常适合.我希望这会给你一个如何修复代码的提示.
require 'sinatra'
get '/' do
<<-HTML
<html>
<head><title>Multi file upload</title></head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="images[]" multiple />
<input type="submit" />
</form>
</body>
</html>
HTML
end
post '/upload' do
content_type :text
res = "I received the following files:\n"
res << params['images'].map{|f| f[:filename] }.join("\n")
res
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2461 次 |
| 最近记录: |