When access WebDav , it is read only(S3 as primary Storage)

Nextcloud version (eg, 12.0.2): 13.0.0
Operating system and version (eg, Ubuntu 17.04): Ubuntu 16.04
Apache or nginx version (eg, Apache 2.4.25): Nginx 1.10.3
PHP version (eg, 7.1): PHP 7.2
I am using S3(DigitalOcean) as primary storage.

The issue you are facing:
When I use WebDav to access files, I could read and create folders. However, I can’t seem to be able to upload anything. It gives me error messages show up in following logs. I could upload without problems with Website, NextCloud apps (PC and Android).

Is this the first time you’ve seen this error? (Y/N): N

Steps to replicate it:

  1. Setup Webdav with Mountain Duck (or Windows)
  2. Try to upload a file
  3. Error: you don’t have permission to destination.

The output of your Nextcloud log in Admin > Logging:

Sabre\DAV\Exception: An exception occurred while completing a multipart upload: Error executing "CompleteMultipartUpload" on "https://nyc3.digitaloceanspaces.com/{reducted}?uploadId=2~Zooq{reducted}NVYqo6ladIlk3oK"; AWS HTTP error: Client error response [url] https://nyc3.digitaloceanspaces.com/{reducted}?uploadId=2~Zooq{reducted}NVYqo6ladIlk3oK [status code] 400 [reason phrase] Bad Request MalformedXML (client): - <?xml version="1.0" encoding="UTF-8"?><Error><Code>MalformedXML</Code><BucketName>{reducted}</BucketName><RequestId>tx00000000000000005d8d8-005a7e2a6b-106ed5-nyc3a</RequestId><HostId>106ed5-nyc3a-nyc</HostId></Error> /var/www/html/apps/dav/lib/Connector/Sabre/File.php - line 186: OCA\DAV\Connector\Sabre\File->convertToSabreException(Object(Aws\S3\Exception\S3MultipartUploadException)) /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php - line 151: OCA\DAV\Connector\Sabre\File->put(Resource id #8) /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 1096: OCA\DAV\Connector\Sabre\Directory->createFile('chandleroleary_...', Resource id #8) /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 525: Sabre\DAV\Server->createFile('files/dnwk/imag...', Resource id #8, NULL) [internal function] Sabre\DAV\CorePlugin->httpPut(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response)) /var/www/html/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array) /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 479: Sabre\Event\EventEmitter->emit('method PUT', Array) /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 254: Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response)) /var/www/html/apps/dav/lib/Server.php - line 283: Sabre\DAV\Server->exec() /var/www/html/apps/dav/appinfo/v2/remote.php - line 35: OCA\DAV\Server->exec() /var/www/html/remote.php - line 164: require_once('/var/www/html/a...') {main} Could not create object urn:oid:36263 for files/images/chandleroleary_rainier_fog_31.jpg.ocTransferId1913196134.part: {"Exception":"Aws\\S3\\Exception\\S3MultipartUploadException","Message":"An exception occurred while completing a multipart upload: Error executing \"CompleteMultipartUpload\" on \"https:\/\/nyc3.digitaloceanspaces.com\/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK\"; AWS HTTP error: Client error response [url] https:\/\/nyc3.digitaloceanspaces.com\/{reducted}\/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK [status code] 400 [reason phrase] Bad Request MalformedXML (client): - <?xml version=\"1.0\" encoding=\"UTF-8\"?><Error><Code>MalformedXML<\/Code><BucketName>{reducted}<\/BucketName><RequestId>tx00000000000000005d8d8-005a7e2a6b-106ed5-nyc3a<\/RequestId><HostId>106ed5-nyc3a-nyc<\/HostId><\/Error>","Code":0,"Trace":"#0 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(203): Aws\\Multipart\\AbstractUploadManager->Aws\\Multipart\\{closure}(*** sensitive parameters replaced ***)\n#1 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(156): GuzzleHttp\\Promise\\Promise::callHandler(2, Object(Aws\\S3\\Exception\\S3Exception), Array)\n#2 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/TaskQueue.php(47): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}(*** sensitive parameters replaced ***)\n#3 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(234): GuzzleHttp\\Promise\\TaskQueue->run()\n#4 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#5 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList()\n#6 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#7 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList()\n#8 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#9 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList()\n#10 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(62): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#11 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Coroutine.php(65): GuzzleHttp\\Promise\\Promise->wait()\n#12 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(246): GuzzleHttp\\Promise\\Coroutine->GuzzleHttp\\Promise\\{closure}(*** sensitive parameters replaced ***)\n#13 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(223): GuzzleHttp\\Promise\\Promise->invokeWaitFn()\n#14 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#15 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList()\n#16 \/var\/www\/html\/3rdparty\/guzzlehttp\/promises\/src\/Promise.php(62): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#17 \/var\/www\/html\/3rdparty\/aws\/aws-sdk-php\/src\/Multipart\/AbstractUploadManager.php(83): GuzzleHttp\\Promise\\Promise->wait()\n#18 \/var\/www\/html\/lib\/private\/Files\/ObjectStore\/S3ObjectTrait.php(107): Aws\\Multipart\\AbstractUploadManager->upload()\n#19 \/var\/www\/html\/lib\/private\/Files\/ObjectStore\/S3ObjectTrait.php(83): OC\\Files\\ObjectStore\\S3->multiPartUpload('urn:oid:36263', Resource id #14)\n#20 \/var\/www\/html\/lib\/private\/Files\/ObjectStore\/ObjectStoreStorage.php(406): OC\\Files\\ObjectStore\\S3->writeObject('urn:oid:36263', Resource id #14)\n#21 \/var\/www\/html\/lib\/private\/Files\/ObjectStore\/ObjectStoreStorage.php(306): OC\\Files\\ObjectStore\\ObjectStoreStorage->writeBack('\/tmp\/oc_tmp_0Nj...', 'files\/images\/ch...')\n#22 [internal function]: OC\\Files\\ObjectStore\\ObjectStoreStorage->OC\\Files\\ObjectStore\\{closure}(*** sensitive parameters replaced ***)\n#23 \/var\/www\/html\/apps\/files_external\/3rdparty\/icewind\/streams\/src\/CallbackWrapper.php(109): call_user_func(Object(Closure))\n#24 [internal function]: Icewind\\Streams\\CallbackWrapper->stream_close()\n#25 \/var\/www\/html\/apps\/dav\/lib\/Connector\/Sabre\/File.php(162): fclose(Resource id #12)\n#26 \/var\/www\/html\/apps\/dav\/lib\/Connector\/Sabre\/Directory.php(151): OCA\\DAV\\Connector\\Sabre\\File->put(Resource id #8)\n#27 \/var\/www\/html\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(1096): OCA\\DAV\\Connector\\Sabre\\Directory->createFile('chandleroleary_...', Resource id #8)\n#28 \/var\/www\/html\/3rdparty\/sabre\/dav\/lib\/DAV\/CorePlugin.php(525): Sabre\\DAV\\Server->createFile('files\/dnwk\/imag...', Resource id #8, NULL)\n#29 [internal function]: Sabre\\DAV\\CorePlugin->httpPut(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#30 \/var\/www\/html\/3rdparty\/sabre\/event\/lib\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\n#31 \/var\/www\/html\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(479): Sabre\\Event\\EventEmitter->emit('method:PUT', Array)\n#32 \/var\/www\/html\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(254): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#33 \/var\/www\/html\/apps\/dav\/lib\/Server.php(283): Sabre\\DAV\\Server->exec()\n#34 \/var\/www\/html\/apps\/dav\/appinfo\/v2\/remote.php(35): OCA\\DAV\\Server->exec()\n#35 \/var\/www\/html\/remote.php(164): require_once('\/var\/www\/html\/a...')\n#36 {main}","File":"\/var\/www\/html\/3rdparty\/aws\/aws-sdk-php\/src\/Multipart\/AbstractUploadManager.php","Line":136} 2018-02-09T15:10:35-0800 Error no app in context Aws\S3\Exception\S3MultipartUploadException: An exception occurred while completing a multipart upload: Error executing "CompleteMultipartUpload" on "https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK"; AWS HTTP error: Client error response [url] https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK [status code] 400 [reason phrase] Bad Request MalformedXML (client): - <?xml version="1.0" encoding="UTF-8"?><Error><Code>MalformedXML</Code><BucketName>{reducted}</BucketName><RequestId>tx00000000000000005d8d8-005a7e2a6b-106ed5-nyc3a</RequestId><HostId>106ed5-nyc3a-nyc</HostId></Error> 2018-02-09T15:10:35-0800 Error no app in context Aws\S3\Exception\S3MultipartUploadException: An exception occurred while completing a multipart upload: Error executing "CompleteMultipartUpload" on "https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK"; AWS HTTP error: Client error response [url] https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK [status code] 400 [reason phrase] Bad Request MalformedXML (client): - <?xml version="1.0" encoding="UTF-8"?><Error><Code>MalformedXML</Code><BucketName>{reducted}</BucketName><RequestId>tx00000000000000005d8d4-005a7e2a6b-106ed5-nyc3a</RequestId><HostId>106ed5-nyc3a-nyc</HostId></Error> 2018-02-09T15:10:35-0800 Error no app in context Aws\S3\Exception\S3MultipartUploadException: An exception occurred while completing a multipart upload: Error executing "CompleteMultipartUpload" on "https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK"; AWS HTTP error: Client error response [url] https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK [status code] 400 [reason phrase] Bad Request MalformedXML (client): - <?xml version="1.0" encoding="UTF-8"?><Error><Code>MalformedXML</Code><BucketName>{reducted}</BucketName><RequestId>tx000000000000000053ee2-005a7e2a6b-fef35-nyc3a</RequestId><HostId>fef35-nyc3a-nyc</HostId></Error> 2018-02-09T15:10:35-0800 Error no app in context Aws\S3\Exception\S3MultipartUploadException: An exception occurred while completing a multipart upload: Error executing "CompleteMultipartUpload" on "https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK"; AWS HTTP error: Client error response [url] https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK [status code] 400 [reason phrase] Bad Request MalformedXML (client): - <?xml version="1.0" encoding="UTF-8"?><Error><Code>MalformedXML</Code><BucketName>{reducted}</BucketName><RequestId>tx00000000000000005d8d3-005a7e2a6b-106ed5-nyc3a</RequestId><HostId>106ed5-nyc3a-nyc</HostId></Error> 2018-02-09T15:10:35-0800 Error no app in context Aws\S3\Exception\S3MultipartUploadException: An exception occurred while completing a multipart upload: Error executing "CompleteMultipartUpload" on "https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK"; AWS HTTP error: Client error response [url] https://nyc3.digitaloceanspaces.com/{reducted}/urn%3Aoid%3A36263?uploadId=2~ZooqKgEDLfLbvPQHNVYqo6ladIlk3oK [status code] 400 [reason phrase] Bad Request MalformedXML (client): - <?xml version="1.0" encoding="UTF-8"?><Error><Code>MalformedXML</Code><BucketName>{reducted}</BucketName><RequestId>tx000000000000000053edd-005a7e2a6b-fef35-nyc3a</RequestId><HostId>fef35-nyc3a-nyc</HostId></Error>

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

$CONFIG = array (
  'objectstore' => 
  array (
    'class' => 'OC\\Files\\ObjectStore\\S3',
    'arguments' => 
    array (
      'bucket' => '*',
      'autocreate' => true,
      'key' => '*',
      'secret' => '*',
      'hostname' => 'nyc3.digitaloceanspaces.com',
      'port' => 443,
      'use_ssl' => true,
      'region' => '',
      'use_path_style' => true,
    ),
  ),
  'instanceid' => '*',
  'passwordsalt' => '*',
  'secret' => '*',
  'trusted_domains' => 
  array (
    0 => 'cloud.*',
  ),
  'datadirectory' => '/var/www/*',
  'overwrite.cli.url' => 'https://cloud.*',
  'dbtype' => 'pgsql',
  'version' => '13.0.0.14',
  'dbname' => '*',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => '*',
  'dbpassword' => '*',
  'installed' => true,
  'maintenance' => false,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'localhost',
    'port' => 6379,
  ),
  'data-fingerprint' => '*',
);

The output of your Apache/nginx/system log in /var/log/____:

Did not generated any Nginx error log