WebDAV folder sync iOS Readdle Documents 6 issue

Hello everyone,

First a big Thank You to the owncloud team for an amazing product!

Here is something strange with folder sync from an owncloud 10.0.4 server on an Ubuntu 17.04 to an iPad running iOS 11 and Readdle Documents 6.2.5.414.

When synchronizing a folder to the ipad, all folders and files show up. In the first level of the synced folder, files are fine. But files in any sub-folder show up as folders, not documents.

Say you sync this folder structure:
MyDocs/
image1.jpg
sub/
image2.jpg

Then image1.jpg would be ok, but image2.jpg would show up as an empty folder with that name.

All other features, including owncloud desktop client sync, works fine. The same ipads syncing folders from an owncloud 8.1.5 works fine.

Can anyone help?

Thanks

Steps to reproduce

  1. Create a folder structure with subfolders.
  2. Sync to Readdle Documents on iOS.
  3. Check any document in a subfolder.

Expected behaviour

Documents should be documents.

Actual behaviour

Documents become folders.

Server configuration

Operating system: Ububntu 17.04.

Web server: Apache 2.4.25

Database: Mysql 5.7.20

PHP version: 7.0

ownCloud version: 10.0.4

Updated from an older ownCloud or fresh install: From 10.0.3

Where did you install ownCloud from: download.owncloud.org/download/repositories/production/Ubuntu_17.04

Signing status (ownCloud 9.0 and above): No errors have been found.

The content of config/config.php: https://pastebin.com/Ns5B9F7c

List of activated apps:

Enabled:
- activity: 2.3.6
- calendar: 1.5.4
- comments: 0.3.0
- configreport: 0.1.1
- contacts: 1.5.3
- dav: 0.3.2
- federatedfilesharing: 0.3.1
- federation: 0.1.0
- files: 1.5.1
- files_external: 0.7.1
- files_pdfviewer: 0.8.2
- files_sharing: 0.10.1
- files_texteditor: 2.2.1
- files_trashbin: 0.9.1
- files_versions: 1.3.0
- files_videoplayer: 0.9.8
- firstrunwizard: 1.1
- gallery: 16.0.2
- market: 0.2.3
- notifications: 0.3.2
- provisioning_api: 0.5.0
- systemtags: 0.3.0
- templateeditor: 0.1
- updatenotification: 0.2.1
- user_ldap: 0.9.1
Disabled:
- encryption
- external
- theme-example
- user_external

Are you using external storage, if yes which one: no

Are you using encryption: LUKS

Are you using an external user-backend, if yes which one: LDAP

Client configuration

Browser: Readdle Documents 6.2.5.414.

Operating system: iOS 11

Logs

Web server error log

Insert your webserver log here

ownCloud log (data/owncloud.log)

Insert your ownCloud log here

Browser log

Insert your browser log here, this could for example include:

a) The javascript console log
b) The network log 
c) ...

As this is WebDAV as well, it might be the same or a similar issue? https://github.com/owncloud/core/issues/29793

You are right, I can confirm the davfs2 mount issue with this installation. PVince81's DAV CORS workaround fixed the davfs2 mount issue, but unfortunately not the iPad issue.

Could you provide that information in the github? Would appreciate it.

I'm sorry, this is my first report here... do I report an issue at https://github.com/owncloud/core/issues ?

Just adding it to this issue should work for now. The PR is in discussion.

@christianh can you try disabling the CORS plugin completely like described here https://github.com/owncloud/core/issues/29793#issuecomment-350309630 ?

If the problem persists then maybe it's a different issue... (I don't have an ios device so can't test)

I tried that, looks like it is a different issue. Sorry. If you have something that I can test with iOS devices just let me know. Happy to do that.

I am running into the exact same issue here.

To track the issue down I created the following folder structure:

testingfolder (directory)
|- testingfile.txt (empty file)
|- testingfolder2 (directory)
     |- testingfile2.txt (empty file)

After that, I sniffed the communication between the iOS client/Readdle Documents.

When syncing testingfolder:

OPTIONS /owncloud/remote.php/webdav HTTP/1.1
Host: owncloud.prdom
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
Accept: */*
User-Agent: ReaddleDAV Documents/6.2.7.416 (redirects)
Authorization: Basic hello=
Accept-Language: de-de
X-Device-Name: pr's iPhone8

HTTP/1.1 200 OK
Date: Mon, 01 Jan 2018 12:19:10 GMT
Server: Apache/2.4.25 (Debian)
Set-Cookie: oc63oltz1bjb=0u89dviamn7cfvi454id4bgim6; path=/owncloud; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: oc_sessionPassphrase=hello; path=/owncloud; httponly
Content-Security-Policy: default-src 'none';
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Set-Cookie: hello; path=/owncloud; HttpOnly
Set-Cookie: cookie_test=test; expires=Mon, 01-Jan-2018 13:19:10 GMT; Max-Age=3600
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT
DAV: 1, 3, extended-mkcol
MS-Author-Via: DAV
Accept-Ranges: bytes
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

PROPFIND /owncloud/remote.php/webdav/ HTTP/1.1
Host: owncloud.prdom
Accept: */*
Authorization: Basic hello=
X-Device-Name: pr's iPhone8
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Content-Type: application/xml
Content-Length: 212
Depth: 1
Connection: keep-alive
User-Agent: ReaddleDAV Documents/6.2.7.416 (redirects)
Cookie: cookie_test=test; hello; oc_sessionPassphrase=hello

<?xml version="1.0" encoding="utf-8"?>    <propfind xmlns="DAV:"><prop><getcontentlength xmlns="DAV:"/>    <getlastmodified xmlns="DAV:"/><creationdate xmlns="DAV:"/><resourcetype xmlns="DAV:"/></prop></propfind>HTTP/1.1 207 Multi-Status
Date: Mon, 01 Jan 2018 12:19:10 GMT
Server: Apache/2.4.25 (Debian)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Security-Policy: default-src 'none';
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Vary: Brief,Prefer
DAV: 1, 3, extended-mkcol
Content-Length: 3685
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: application/xml; charset=utf-8

<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns"><d:response><d:href>/owncloud/remote.php/webdav/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/Actions/</d:href><d:propstat><d:prop><d:getlastmodified>Sun, 31 Dec 2017 07:05:05 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/Documents/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 25 Dec 2017 13:16:11 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/Media/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 03:58:48 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/Notes/</d:href><d:propstat><d:prop><d:getlastmodified>Fri, 01 Jul 2016 19:34:08 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/Photos/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 03:20:23 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/Profiles/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 13 Nov 2017 07:48:06 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/Reader/</d:href><d:propstat><d:prop><d:getlastmodified>Thu, 28 Dec 2017 16:44:08 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response></d:multistatus>PROPFIND /owncloud/remote.php/webdav/testingfolder/ HTTP/1.1
Host: owncloud.prdom
Accept: */*
Authorization: Basic hello=
X-Device-Name: pr's iPhone8
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Content-Type: application/xml
Content-Length: 212
Depth: infinity
Connection: keep-alive
User-Agent: ReaddleDAV Documents/6.2.7.416 (redirects)
Cookie: cookie_test=test; hello; oc_sessionPassphrase=hello

<?xml version="1.0" encoding="utf-8"?>    <propfind xmlns="DAV:"><prop><getcontentlength xmlns="DAV:"/>    <getlastmodified xmlns="DAV:"/><creationdate xmlns="DAV:"/><resourcetype xmlns="DAV:"/></prop></propfind>HTTP/1.1 207 Multi-Status
Date: Mon, 01 Jan 2018 12:19:10 GMT
Server: Apache/2.4.25 (Debian)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Security-Policy: default-src 'none';
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Vary: Brief,Prefer
DAV: 1, 3, extended-mkcol
Content-Length: 1811
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: application/xml; charset=utf-8

<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns"><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/testingfile.txt</d:href><d:propstat><d:prop><d:getcontentlength>0</d:getcontentlength><d:getlastmodified>Mon, 01 Jan 2018 12:16:43 GMT</d:getlastmodified><d:resourcetype/></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/testingfolder2/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/testingfolder2/testingfile2.txt</d:href><d:propstat><d:prop><d:getcontentlength>0</d:getcontentlength><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response></d:multistatus>

The interesting part should be:

	<d:response>
		<d:href>/owncloud/remote.php/webdav/testingfolder/testingfolder2/testingfile2.txt</d:href>
		<d:propstat>
			<d:prop>
				<d:getcontentlength>0</d:getcontentlength>
				<d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified>
				<d:resourcetype>
					<d:collection />
				</d:resourcetype>
			</d:prop>
			<d:status>HTTP/1.1 200 OK</d:status>
		</d:propstat>
        [...]
	</d:response>

From my understanding - it's really hard to find the right spot in the rfc without extensive time - d:resourcetype should be empty for regular files.

When only browsing the folder structure in Documents without syncing all file types are displayed correctly:

PROPFIND /owncloud/remote.php/webdav/testingfolder/ HTTP/1.1
Host: owncloud.prdom
Accept: */*
Authorization: Basic hello=
X-Device-Name: pr's iPhone8
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Content-Type: application/xml
Content-Length: 212
Depth: 1
Connection: keep-alive
User-Agent: ReaddleDAV Documents/6.2.7.416 (redirects)
Cookie: cookie_test=test; hello; oc_sessionPassphrase=hello

<?xml version="1.0" encoding="utf-8"?>    <propfind xmlns="DAV:"><prop><getcontentlength xmlns="DAV:"/>    <getlastmodified xmlns="DAV:"/><creationdate xmlns="DAV:"/><resourcetype xmlns="DAV:"/></prop></propfind>HTTP/1.1 207 Multi-Status
Date: Mon, 01 Jan 2018 12:33:21 GMT
Server: Apache/2.4.25 (Debian)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Security-Policy: default-src 'none';
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Vary: Brief,Prefer
DAV: 1, 3, extended-mkcol
Content-Length: 1358
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/xml; charset=utf-8

<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns"><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/testingfile.txt</d:href><d:propstat><d:prop><d:getcontentlength>0</d:getcontentlength><d:getlastmodified>Mon, 01 Jan 2018 12:16:43 GMT</d:getlastmodified><d:resourcetype/></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/testingfolder2/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response></d:multistatus>PROPFIND /owncloud/remote.php/webdav/testingfolder/testingfolder2/ HTTP/1.1
Host: owncloud.prdom
Accept: */*
Authorization: Basic hello=
X-Device-Name: pr's iPhone8
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Content-Type: application/xml
Content-Length: 212
Depth: 1
Connection: keep-alive
User-Agent: ReaddleDAV Documents/6.2.7.416 (redirects)
Cookie: cookie_test=test; hello; oc_sessionPassphrase=hello

<?xml version="1.0" encoding="utf-8"?>    <propfind xmlns="DAV:"><prop><getcontentlength xmlns="DAV:"/>    <getlastmodified xmlns="DAV:"/><creationdate xmlns="DAV:"/><resourcetype xmlns="DAV:"/></prop></propfind>HTTP/1.1 207 Multi-Status
Date: Mon, 01 Jan 2018 12:33:22 GMT
Server: Apache/2.4.25 (Debian)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Security-Policy: default-src 'none';
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Vary: Brief,Prefer
DAV: 1, 3, extended-mkcol
Content-Length: 973
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: application/xml; charset=utf-8

<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns"><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/testingfolder2/</d:href><d:propstat><d:prop><d:getlastmodified>Mon, 01 Jan 2018 12:17:01 GMT</d:getlastmodified><d:resourcetype><d:collection/></d:resourcetype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:getcontentlength/><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response><d:response><d:href>/owncloud/remote.php/webdav/testingfolder/testingfolder2/testingfile2.txt</d:href><d:propstat><d:prop><d:getcontentlength>0</d:getcontentlength><d:getlastmodified>Mon, 01 Jan 2018 12:16:52 GMT</d:getlastmodified><d:resourcetype/></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat><d:propstat><d:prop><d:creationdate/></d:prop><d:status>HTTP/1.1 404 Not Found</d:status></d:propstat></d:response></d:multistatus>

Relevant part:

    <d:response>
		<d:href>/owncloud/remote.php/webdav/testingfolder/testingfolder2/testingfile2.txt</d:href>
		<d:propstat>
			<d:prop>
				<d:getcontentlength>0</d:getcontentlength>
				<d:getlastmodified>Mon, 01 Jan 2018 12:16:52 GMT</d:getlastmodified>
				<d:resourcetype />
			</d:prop>
			<d:status>HTTP/1.1 200 OK</d:status>
		</d:propstat>
		[...]
	</d:response>

I hope, this helps to track down the problem.

Patrick

Any news about the issue?

I must admit that I'm a little bit concerned about the silence...

Patrick

Just in case anyone else is in strong need of a working WebDAV implementation: Migrating to Nextcloud worked like a charme and solved the issue.

Hello,

i have the same problem with the subfolder-sync.

Any news about the issue?

Michael

This issue just became a real problem. The Desktop Client 2.5.0 now flags all server versions below 10.0 as not supported and automatically pauses synchronization. However, 10.0.10 still has not fixed the WebDAV bug. So now we are forced to choose: have desktop sync or iOS sync.

Hi,

we would like to fix this issue.

But, the first step is to reproduce this issue.

Can you tell me the following information?

What version of ownCloud server are you on right now?

If it’s not 10.0.10 ( the latest ) have you tried upgrading and checking if the issue persists?

What client version are you using?

What sync client version?

You mention an app “Readdle Documents 6” is this a document editor? Have you tried Microsoft Office?

What are the steps to reproduce for this issue?

The steps from you original post are to vague. We need precise steps.

You also mention that you are on iOS 11, have you updated to 12?

Hi Dmitry,

Thank you, that was quick! See https://github.com/owncloud/core/issues/32935 for details.

Yeah, that does not answer any of my questions.

ownCloud 10.0.10 (stable)

Readdle Documents 6.6.1.562

Desktop Client Version 2.5.0 (build 10213).

No.

  1. Create this folder structure anywhere in the user’s files with two image files:
    MyDocs/
      image1.jpg
      sub/
        image2.jpg
  1. Open Documents on the iOS device, log in, browse to the folder MyDocs.
  2. Sync the folder.
  3. Open the synced folder.

No. Do you think this is an iOS issue? My thought was that this could point to a WebDAV implementation issue, since it came up with the Server 10.0 version. I have tried multiple combinations of iOS versions, Documents versions, and owncloud server versions. It happens with server >10 and any client combination I had.

Okay, I just tried it.

I installed the Readdle Documents on my iPad which has iOS 12, connected to a 10.0.10 ownCloud and was able to browse in sub folders. Sub folders were folders an not just file names.

I suspect a different issue.

I think you are trying to edit documents on your iOS Device, and save them in ownCloud and expect it to sync properly. This does not work because ownClouds iOS app has no “Files” integration as for now. The new ownCloud iOS app should have that, but this on has not.

If that’s not your issue then let’s debug further together.

  1. log in where? in the ownCloud app? in the web UI?
  2. sync the folder where? with what?

Edit:

My second test

on the iPAD:

Go in the Readdle Documents app
Go in to the ownCloud directory connected via WebDav
Go in a subfolder, go in to the subfolder of the subfolder.
Edit a Text Document there, wait for the changes to be synced.
Go in the root dir and in the subfolders again. Everything works and I can see the folders and the changes in my document.

That is correct, you can browse the files with no problem. Try syncing the folder: Click the three dots, then Sync.

Open Readdle Documents. Go to Services, Add Account, WebDAV Server. Enter your owncloud WebDAV credentials and URL.

Go to your newly created Services entry. Navigate so you can see the MyDocs folder. Click its three dots, then Sync. Go to the Documents tab. Open your synced folder once it has a green checkmark.

Edit: I am happy to dig deeper into logs or generate more detailed logs. Just let me know what can help. Thanks for your support, dmitry!

Uhh, now I see every file as a folder.

Every file in a sub directory that is.

Edit:

Quick question: why don’t you use the ownCloud iOS app?