Skip to content

Ruby gem to create data that uses the same format as multipart/form-data.

License

Notifications You must be signed in to change notification settings

nelsond/formdata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FormData Build Status

Ruby gem to generate data in the same format as "multipart/form-data". The gem is heavily inspired by the JavaScript FormData API.

Installation

Add this line to your application's Gemfile:

gem 'formdata'

And then execute:

$ bundle

Or install it yourself as:

$ gem install formdata

Example usage

require 'formdata'
require 'stringio'
require 'net/http'

# create form data
f = FormData.new

# append some text values...
f.append('name', 'Richard')
f.append('surname', 'Feynman')

# ...and some files...
f.append('avatar-file', File.open('some/file.jpg'))
f.append('cv-file', File.open('some/file.pdf'), {
  :content_type => 'application/pdf',
  :filename => 'cv.pdf'
})
f.append('text-file', StringIO.new('test'), {
  :content_tyoe => 'text/plain',
  :filename => 'text.txt'
})

# ...or multiple values from a hash
f.append({
    'street' => '1200 E California Blvd',
    'city' => 'Pasadena',
    'zip' => '91125',
    'state' => 'CA',
    'map-file' => File.open('some/file.pdf')
})

# create a new net/http request
req = Net::HTTP::Post.new('/test')
req.content_type = f.content_type
req.content_length = f.size
req.body_stream = f

# send the request
http = Net::HTTP.new('localhost', 80)
http.request(req) # => ...response

# or use the request constructor
req = f.post_request('/test')
http = Net::HTTP.new('localhost', 80)
http.request(req) # => ...response

Supported Ruby versions

This library requires a Ruby version >= 1.9.2 and is tested against the following versions:

  • Ruby 1.9.2
  • Ruby 1.9.3
  • Ruby 2.0
  • Ruby 2.1
  • Ruby 2.2
  • Ruby 2.3

About

Ruby gem to create data that uses the same format as multipart/form-data.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages