rfc:curl-file-upload
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:curl-file-upload [2013/01/06 05:03] – [Changelog] stas | rfc:curl-file-upload [2013/10/29 17:23] – -> Implemented nikic | ||
---|---|---|---|
Line 3: | Line 3: | ||
* Date: 2013-01-06 | * Date: 2013-01-06 | ||
* Author: Stas Malyshev < | * Author: Stas Malyshev < | ||
- | * Status: | + | * Status: |
* First Published at: http:// | * First Published at: http:// | ||
* See also: https:// | * See also: https:// | ||
+ | * Implementation: | ||
This RFC discusses improvement for CURL file uploading option. | This RFC discusses improvement for CURL file uploading option. | ||
- | |||
===== Introduction ===== | ===== Introduction ===== | ||
Line 33: | Line 33: | ||
The curl API will be modified to look for objects of type CurlFile and treat them as entries with @ were previously treated. | The curl API will be modified to look for objects of type CurlFile and treat them as entries with @ were previously treated. | ||
- | ===== CurlFile | + | The file given to CurlFile will not be opened/read until curl_setopt() call. |
+ | ===== CURLFile | ||
<code php> | <code php> | ||
- | class CurlFile | + | class CURLFile |
{ | { | ||
/** | /** | ||
Line 87: | Line 88: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Also, the functional API to creating CURLFile is provided by request: | ||
+ | |||
+ | <code php> | ||
+ | /** | ||
+ | * Create CURLFile object | ||
+ | * @param string $name File name | ||
+ | * @param string $mimetype Mime type, optional | ||
+ | * @param string $postfilename Post filename, defaults to actual filename | ||
+ | */ | ||
+ | function curl_file_create($name, | ||
+ | {} | ||
+ | </ | ||
+ | |||
+ | This will create a new ```CURLFile``` object just as ```new CURLFile()``` would. | ||
===== Backward compatibility ===== | ===== Backward compatibility ===== | ||
- | In order to assure orderly transition to the use of the new API, the proposal is in 5.5 to leave the @ option working, but make it produce E_DEPRECATED error referring the user to the use of the new API. In 5.6, @ option will be switched off by default, but can still be enabled by explicit curl_setopt setting, such as: | + | A new option is introduced: '' |
<code php> | <code php> | ||
- | curl_setopt($curl_handle, | + | curl_setopt($curl_handle, |
</ | </ | ||
- | In future versions, this capability may be removed completely. | + | In 5.6, @ option will be switched off by default, but can still be enabled by explicit curl_setopt setting, such as: |
+ | <code php> | ||
+ | curl_setopt($curl_handle, | ||
+ | </ | ||
+ | |||
+ | In future versions, this capability may be removed completely. | ||
===== Optional ===== | ===== Optional ===== | ||
- | If upstream cURL API permits, we could add in the future uploading files from string buffers, stream names, stream resources and such, which is now impossible with existing @-based API. | + | * If upstream cURL API permits, we could add in the future uploading files from string buffers, stream names, stream resources and such, which is now impossible with existing @-based API. The CurlFile API above will then be extended with required functions to support these, such as " |
+ | * It is possible to include validation of the file resource given in the constructor, | ||
+ | |||
===== References ===== | ===== References ===== | ||
* CURL form API: http:// | * CURL form API: http:// | ||
* curl_setopt: | * curl_setopt: | ||
+ | * Pull request: https:// | ||
+ | |||
+ | ===== Vote ===== | ||
+ | |||
+ | Voting ended on Monday, January 28th 2013. In order to pass, the requirement is 50%+1 vote, since PHP core language is not changed. The result is: **ACCEPTED**. | ||
+ | |||
+ | < | ||
+ | title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
===== Changelog ===== | ===== Changelog ===== | ||
* 2013-01-05 First draft | * 2013-01-05 First draft | ||
+ | * 2013-01-06 Added pull req | ||
+ | * 2013-01-07 Added CURLOPT_SAFE_UPLOAD description | ||
+ | * 2013-01-12 Added curl_file_create() | ||
rfc/curl-file-upload.txt · Last modified: 2018/07/03 19:16 by stas