Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add better support for adding form file parameters to web requests
Something I ended up needing in the course of BSS work. The previous implementation would treat files as a straight dictionary, as in you could have only one file with a given parameter name in a request. This isn't how `multipart/form-data` really works; you're allowed to send multiple files in scope of a single parameter. Additionally, the request did not permit specifying a filename, which is yet another thing I need for BSS purposes. I don't believe this method has any real consumers, yet anyhow: Breaking changes ---------------- `WebRequest.AddFile()` has been altered to provide an API closer to what the HTTP specs intended, and to allow sending multiple files for a given request parameter. To that end: - The signature of the method has changed from ```csharp public void AddFile(string name, byte[] data); ``` to ```csharp public void AddFile(string paramName, byte[] data, string filename = "blob"); ``` - Calling `.AddFile()` with the same first parameter (formerly called `name`, now called `paramName`) twice will result in two files being sent in the request, rather than the second call overwriting the file added by the first one. - If the `filename` parameter is not explicitly specified in the method call, the filename given in the `Content-Disposition` header of the multipart request has changed from being equal to the parameter name to `blob`. This is consistent with JavaScript `FormData` API behaviour.
- Loading branch information