MDL-33174 lib/filestorage: Add filename to curl request

While the lack of the filename in curl POST does not
directly affect Moodle, some external API's expect to get
the filename of the original file, which affects plugins
using the CURL class.
This commit is contained in:
Matt Clarkson
2017-10-02 09:27:51 +13:00
parent 23ab0d7788
commit b1eb6dd7f2
3 changed files with 25 additions and 1 deletions
+1 -1
View File
@@ -362,7 +362,7 @@ abstract class file_system {
public function add_to_curl_request(stored_file $file, &$curlrequest, $key) {
// Note: curl_file_create does not work with remote paths.
$path = $this->get_local_path_from_storedfile($file, true);
$curlrequest->_tmp_file_post_params[$key] = curl_file_create($path);
$curlrequest->_tmp_file_post_params[$key] = curl_file_create($path, null, $file->get_filename());
}
/**
+23
View File
@@ -545,6 +545,29 @@ class core_filelib_testcase extends advanced_testcase {
$this->assertSame('OK', $contents);
}
public function test_curl_file_name() {
$this->resetAfterTest();
$testurl = $this->getExternalTestFileUrl('/test_file_name.php');
$fs = get_file_storage();
$filerecord = array(
'contextid' => context_system::instance()->id,
'component' => 'test',
'filearea' => 'curl_post',
'itemid' => 0,
'filepath' => '/',
'filename' => 'test.txt'
);
$teststring = 'moodletest';
$testfile = $fs->create_file_from_string($filerecord, $teststring);
// Test post with file.
$data = array('testfile' => $testfile);
$curl = new curl();
$contents = $curl->post($testurl, $data);
$this->assertSame('OK', $contents);
}
public function test_curl_protocols() {
// HTTP and HTTPS requests were verified in previous requests. Now check
+1
View File
@@ -46,6 +46,7 @@ information provided here is intended especially for developers.
update to use the ModalEvents.save and ModalEvents.cancel events instead of their yes/no counterparts.
* Instead of checking the 'moodle/course:viewparticipants' and 'moodle/site:viewparticipants' capabilities use the
new functions course_can_view_participants() and course_require_view_participants().
* $stored_file->add_to_curl_request() now adds the filename to the curl request.
=== 3.3.1 ===