diff --git a/lib/file/stored_file.php b/lib/file/stored_file.php index bbc0dfb856aff..d42061286bf9e 100644 --- a/lib/file/stored_file.php +++ b/lib/file/stored_file.php @@ -49,6 +49,16 @@ protected function get_content_file_location() { return "$filedir/$l1/$l2/$l3/$contenthash"; } + /** + * adds this file path to a curl request (POST only) + * + * @param curl $curlrequest the curl request object + * @param string $key what key to use in the POST request + */ + public function add_to_curl_request(&$curlrequest, $key) { + $curlrequest->_tmp_file_post_params[$key] = '@' . $this->get_content_file_location(); + } + /** * Returns file handle - read only mode, no writing allowed into pool files! * @return file handle diff --git a/lib/filelib.php b/lib/filelib.php index 10d2684d8a31b..c90b7fc344b82 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -1635,7 +1635,16 @@ public function head($url, $options = array()){ */ public function post($url, $params = array(), $options = array()){ $options['CURLOPT_POST'] = 1; - $options['CURLOPT_POSTFIELDS'] = $params; + $this->_tmp_file_post_params = array(); + foreach ($params as $key => $value) { + if ($value instanceof stored_file) { + $value->add_to_curl_request($this, $key); + } else { + $this->_tmp_file_post_params[$key] = $value; + } + } + $options['CURLOPT_POSTFIELDS'] = $this->_tmp_file_post_params; + unset($this->_tmp_file_post_params); return $this->request($url, $options); }