2015-03-30 4 views
5

Мне нужно создать POST, где я могу загрузить несколько файлов по одному и тому же запросу, но я не знаю, как писать это с помощью винограда. Прямо сейчас, чтобы загрузить только один файл, это то, что я делаю, и это прекрасно работает:Загрузка нескольких файлов по одному и тому же запросу

desc 'Creates a new attachment.' 
params do 
    requires :file, :type => Rack::Multipart::UploadedFile, :desc => "Attachment File." 
end 
post do 
    attachment = Attachment.new 
    attachment.file = ActionDispatch::Http::UploadedFile.new(params[:file]) 
    attachment.save! 
    attachment 
end 

Кураж показывает мне это:

enter image description here

Я думал сделать что-то вроде этого:

desc 'Creates a new attachment.' 
params do 
    requires :file, :type => Array[Rack::Multipart::UploadedFile], :desc => "Attachment File." 
end 

Но это не выглядит хорошо:

enter image description here

Также я попробовал:

params do 
    optional :attachments, type: Array do 
    requires :file, :type => Rack::Multipart::UploadedFile, :desc => "Attachment File." 
    end 
end 

Не хороший результат либо.

enter image description here

Что такое правильный способ обработки этого?

ответ

7

После некоторого тестирования я нашел ответ, я оставлю это здесь:

params do 
    requires :first_name, type: String, desc: "User first name" 
    requires :last_name, type: String, allow_blank: false, desc: "User last name" 
    optional :attachments, type: Array do 
    requires :file, :type => Rack::Multipart::UploadedFile, :desc => "Profile pictures." 
    end 
end 

Вы не можете проверить это с помощью чванства (или, по крайней мере, я не нашел способ сделать это), но вы можете использовать этот завиток:

curl -v -F "first_name=John" -F "last_name=McTest" -F "attachments[][file][email protected]_picture.png" -F "attachments[][file][email protected]_picture.jpg" http://url/api/users 
Смежные вопросы