Skip to content

Conversation

@hatoo
Copy link
Owner

@hatoo hatoo commented Jun 28, 2025

Add comprehensive support for HTTP multipart form data submission using the -F/--form option, fully compatible with curl's form data syntax.

Features:

  • Support for text fields: -F 'name=value'
  • File uploads with filename: -F 'file=@path/to/file'
  • File uploads without filename: -F 'file=<path/to/file'
  • Custom content types: -F 'field=data;type=text/plain'
  • Custom filenames: -F 'field=data;filename=custom.txt'
  • Proper multipart/form-data boundary generation
  • Comprehensive test coverage for all form data scenarios

Implementation includes:

  • New curl_compat module with Form and FormPart structures
  • RFC-compliant multipart body generation
  • Integration with existing CLI argument parsing
  • Mutual exclusion with -d/-D body options
  • Full compatibility with curl's -F syntax and behavior

This enables oha to perform load testing on endpoints that require multipart form data, such as file upload APIs and forms with mixed content types.

This PR partially resolve #754. It's not fill compatible to curl yet

hatoo added 2 commits June 28, 2025 16:56
Add comprehensive support for HTTP multipart form data submission using
the -F/--form option, fully compatible with curl's form data syntax.

Features:
- Support for text fields: -F 'name=value'
- File uploads with filename: -F 'file=@path/to/file'
- File uploads without filename: -F 'file=<path/to/file'
- Custom content types: -F 'field=data;type=text/plain'
- Custom filenames: -F 'field=data;filename=custom.txt'
- Proper multipart/form-data boundary generation
- Comprehensive test coverage for all form data scenarios

Implementation includes:
- New curl_compat module with Form and FormPart structures
- RFC-compliant multipart body generation
- Integration with existing CLI argument parsing
- Mutual exclusion with -d/-D body options
- Full compatibility with curl's -F syntax and behavior

This enables oha to perform load testing on endpoints that require
multipart form data, such as file upload APIs and forms with mixed
content types.
@hatoo hatoo merged commit 0f696ce into master Jun 28, 2025
21 of 22 checks passed
@hatoo hatoo deleted the form branch July 1, 2025 09:54
@reneleonhardt
Copy link
Contributor

Awesome feature, thank you!

The description mentions
"Full compatibility with curl's -F syntax and behavior"
and
"This PR partially resolve #754. It's not fill compatible to curl yet".

What's still needed for full compatibility, are there unit tests covering it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support -F option like curl

3 participants