diff options
-rw-r--r-- | it_url.class | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/it_url.class b/it_url.class index e9d3c45..7355463 100644 --- a/it_url.class +++ b/it_url.class @@ -100,8 +100,9 @@ function is_reachable($timeout = 5) * @param $p['totaltimeout'] timeout for the whole function call * @param $p['maxlength'] maximum length of response * @param $p['filemtime'] Add HTTP header to only fetch when newer than this, otherwise return true instead of data - * @param $p['data']: POST data array with key-value pairs - * @param $p['retries']: Number of retries if download fails, default 1 + * @param $p['data'] POST data array with key-value pairs + * @param $p['files'] [fieldname => filename] of files to upload + * @param $p['retries'] Number of retries if download fails, default 1 * @param $p['retrysleep'] Number of seconds to wait before retry, fractions ok * @return contents of resulting page, considering redirects, excluding headers, or false on error */ @@ -123,7 +124,7 @@ function get($p=null, $timeout=5) else # called statically $url = new it_url($p['url']); - if ($url->protocol == 'http' && !$p['curl']) + if ($url->protocol == 'http' && !$p['curl'] && !$p['files']) # only curl can do file upload or non-http protocols $result = $url->request($p); else $result = $url->request_curl($p); @@ -289,6 +290,10 @@ static function curl_opts($p=array()) ); } + # file upload + foreach ((array)$p['files'] as $field => $filename) + $p['data'][$field] = new CURLFile($filename, mime_content_type($filename)); + if ($p['data']) $add[CURLOPT_POSTFIELDS] = $p['data']; @@ -301,6 +306,7 @@ static function curl_opts($p=array()) CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTPHEADER => $headers, CURLOPT_CUSTOMREQUEST => $p['method'] ?: null, + CURLOPT_SAFE_UPLOAD => true, # disable special meaning of @value in POST forms (security) CURLOPT_CAPATH => '/etc/ssl/certs/', CURLOPT_SSL_VERIFYPEER => !$p['allow_insecure_ssl'], @@ -316,6 +322,7 @@ static function curl_opts($p=array()) * todo: * @param $p['filemtime'] Add HTTP header to only fetch when newer than this, otherwise return true instead of data * @param $p['data'] POST data array with key-value pairs + * @param $p['files'] [fieldname => filename] of files to upload * @param $p['method'] different HTTP method */ @@ -769,7 +776,7 @@ static function encode($str) /** * Create GET request from params, optionally only using given fields - * @param $params Array to take values from, usually $_GET + * @param $params Array to take values from, usually $_GET. Values of zero length are ignored. * @param $keys Keys to use; default: all */ static function params($params, $keys = null) |