Fix uploading files containing a # in the path for webdav

This commit is contained in:
Robin Appelman 2014-03-31 17:00:32 +02:00
parent 65e3f63400
commit 76c63a5760
2 changed files with 21 additions and 2 deletions

View file

@ -267,7 +267,7 @@ class DAV extends \OC\Files\Storage\Common {
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERPWD, $this->user . ':' . $this->password);
curl_setopt($curl, CURLOPT_URL, $this->createBaseUri() . str_replace(' ', '%20', $target));
curl_setopt($curl, CURLOPT_URL, $this->createBaseUri() . $this->encodePath($target));
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curl, CURLOPT_INFILE, $source); // file pointer
curl_setopt($curl, CURLOPT_INFILESIZE, filesize($path));

View file

@ -299,7 +299,7 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
$this->assertFalse($this->instance->file_exists('folder'));
}
public function hashProvider(){
public function hashProvider() {
return array(
array('Foobar', 'md5'),
array('Foobar', 'sha1'),
@ -315,4 +315,23 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
$this->assertEquals(hash($type, $data), $this->instance->hash($type, 'hash.txt'));
$this->assertEquals(hash($type, $data, true), $this->instance->hash($type, 'hash.txt', true));
}
public function testHashInFileName() {
$this->instance->file_put_contents('#test.txt', 'data');
$this->assertEquals('data', $this->instance->file_get_contents('#test.txt'));
$this->instance->mkdir('#foo');
$this->instance->file_put_contents('#foo/test.txt', 'data');
$this->assertEquals('data', $this->instance->file_get_contents('#foo/test.txt'));
$dh = $this->instance->opendir('#foo');
$content = array();
while ($file = readdir($dh)) {
if ($file != '.' and $file != '..') {
$content[] = $file;
}
}
$this->assertEquals(array('test.txt'), $content);
}
}