Merge pull request #7970 from owncloud/webdav-upload-hash

Fix uploading files containing a # in the path for webdav
This commit is contained in:
Thomas Müller 2014-04-03 16:09:44 +02:00
commit a2efdb8722
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

@ -310,7 +310,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'),
@ -326,4 +326,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);
}
}