mirror of
https://github.com/curl/curl.git
synced 2026-08-05 00:36:17 +03:00
cli tool: reimplement stdin buffering in -F option.
If stdin is not a regular file, its content is memory-buffered to enable a possible data "rewind". In all cases, stdin data size is determined before real use to avoid having an unknown part's size. --libcurl generated code is left as an unbuffered stdin fread/fseek callback part with unknown data size. Buffering is not supported in deprecated curl_formadd() API.
This commit is contained in:
parent
f64c05278e
commit
665b3e48bc
3 changed files with 153 additions and 14 deletions
|
|
@ -25,9 +25,12 @@ the form-field to which portrait.jpg will be the input:
|
|||
curl -F profile=@portrait.jpg https://example.com/upload.cgi
|
||||
|
||||
To read content from stdin instead of a file, use - as the filename. This goes
|
||||
for both @ and < constructs. For this case, as well as for others in which the
|
||||
full data size cannot be determined before the transfer starts (as named pipes
|
||||
or similar), data is transferred as chunks by HTTP and rejected by IMAP.
|
||||
for both @ and < constructs. If stdin is not attached to a regular file, it is
|
||||
buffered first to determine its size and allow a possible resend. Defining a
|
||||
part's data from a named non-regular file (such as a named pipe or similar) is
|
||||
unfortunately not subject to buffering and will be effectively read at
|
||||
transmission time; since the full size is unknown before the transfer starts,
|
||||
data is sent as chunks by HTTP and rejected by IMAP.
|
||||
|
||||
You can also tell curl what Content-Type to use by using 'type=', in a manner
|
||||
similar to:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue