Probably a bit lower level than you're looking for, but cURL largely meets your requirements.
- While it's primarily a library for use by other software, it has a command-line UI that's actually rather easy to use for most tasks.
- It's 100% FOSS (using a permissive license).
- It supports completely arbitrary HTTP request types. Obviously PUT and DELETE as requested, but also more exotic stuff like OPTIONS, TRACE, PATCH, and the various WebDAV extensions (and actually almost anything, provided it doesn't require encapsulating a connection inside the request).
- It's got a bunch of other useful features like direct support for most authentication types, specifying arbitrary request headers, providing sets of specific HTTP cookies with the request, HTTP/2, TLS, and a whole slew of other things (including an almost comical number of protocols other than HTTP).
- It's tiny (largely because it doesn't have a graphical UI).
Sample command to use PUT to upload a local file (doesn't do any authentication, but should work just fine with HTTPS):
curl -X PUT --data-binary @/some/local/file.txt -o response.txt https://example.com/file.txt
That will take the contents of /some/local/file.txt
, use it as the request body for a PUT request to https://example.com
, save the response to response.txt
on the local system, and display a nice progress meter for the upload.
It's important to note that regardless of what tool you use for this, the web server has to support it. In most cases, this means that the administrator of that server has to explicitly enable support for it, but even then it's not always going to behave exactly the same on all servers.
Also, you probably want to look into WebDAV, it covers this, has good client-side support on all major platforms, and provides a lot more functionality (such as creating directories).
Also of possible interest is the HTTP PATCH request, which lets you upload a patch (in an unspecified format) to modify a resource in-place without having to re-upload the entire resource. Support for that though is even more shoddy than WebDAV or PUT and DELETE.