{"id":16239711,"url":"https://github.com/nopnop2002/esp-idf-webdav-client","last_synced_at":"2026-05-13T12:39:22.627Z","repository":{"id":223386004,"uuid":"760175326","full_name":"nopnop2002/esp-idf-webdav-client","owner":"nopnop2002","description":"WebDav client example for ESP-IDF.","archived":false,"fork":false,"pushed_at":"2026-02-12T12:48:53.000Z","size":60,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-12T21:37:14.587Z","etag":null,"topics":["esp-idf","esp32","webdav-client"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nopnop2002.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-19T23:24:49.000Z","updated_at":"2026-02-12T12:48:57.000Z","dependencies_parsed_at":"2024-02-26T22:49:58.417Z","dependency_job_id":"25999589-5957-4de6-bd14-e845529d2b90","html_url":"https://github.com/nopnop2002/esp-idf-webdav-client","commit_stats":null,"previous_names":["nopnop2002/esp-idf-webdav-client"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nopnop2002/esp-idf-webdav-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-webdav-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-webdav-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-webdav-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-webdav-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nopnop2002","download_url":"https://codeload.github.com/nopnop2002/esp-idf-webdav-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-webdav-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32983541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T11:31:52.688Z","status":"ssl_error","status_checked_at":"2026-05-13T11:31:52.072Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp-idf","esp32","webdav-client"],"created_at":"2024-10-10T13:44:47.095Z","updated_at":"2026-05-13T12:39:22.614Z","avatar_url":"https://github.com/nopnop2002.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# esp-idf-webdav-client\nWebDav client example for ESP-IDF.   \nESP-IDF contains a lot of example code, but there is no example to WebDav client.   \nThis project uses the WevDav protocol to manipulate files on a WebDav server.   \nNo libraries other than ESP-IDF are required to use WebDav.   \n\n# Waht is WebDav   \nWebDAV (Web-based Distributed Authoring and Versioning) is an extension of Hypertext Transfer Protocol and is a protocol that realizes a distributed file system for managing files on web servers.\nhttps://en.wikipedia.org/wiki/WebDAV\n\n\n# Software requirements\nESP-IDF V5.0 or later.   \nESP-IDF V4.4 release branch reached EOL in July 2024.   \nESP-IDF V5.1 is required when using ESP32-C6.   \n\n# Installation\n```\ngit clone https://github.com/nopnop2002/esp-idf-webdav-client\ncd esp-idf-webdav-client\nidf.py menuconfig\nidf.py flash monitor\n```\n\n\n# Configuration\nSet the following items using menuconfig.\n\n![config-top](https://github.com/nopnop2002/esp-idf-webdav-client/assets/6020549/f94309ff-f0b7-4309-9d5a-4a8457ab89ea)\n![config-app](https://github.com/nopnop2002/esp-idf-webdav-client/assets/6020549/7bc90b6c-ce59-4366-ae24-06d9129cfb6b)\n\n## WiFi Setting\n![config-wifi](https://github.com/nopnop2002/esp-idf-webdav-client/assets/6020549/6b682110-34d5-49b8-83e6-5fa03f89a505)\n\n## HTTP Server Setting\nHTTP server is specified by one of the following.\n- IP address   \n ```192.168.10.20```   \n- mDNS host name   \n ```http-server.local```   \n- Fully Qualified Domain Name   \n ```httpbin.org```\n\n![config-http-1](https://github.com/nopnop2002/esp-idf-webdav-client/assets/6020549/6144964d-f0da-496f-9287-abe79bab4f0c)\n\nYou can use BASIC authentication.\n![config-http-2](https://github.com/nopnop2002/esp-idf-webdav-client/assets/6020549/72b8d4f8-f91b-49be-a634-4ca4009e0404)\n\n\n# Start WebDav server on Linux   \n```\n# Install wsgidav\nsudo apt install git python3-pip python3-setuptools\npython3 -m pip install -U pip\npython3 -m pip install wsgidav cheroot\n\n# Create public folder\nmkdir $HOME/web-test\n\n# Start WebDav server\nwsgidav --host=0.0.0.0 --port=8080 --root=$HOME/web-test --auth anonymous\n```\n\n# How to use\n- Open a new terminal and navigate to your public directory.   \n```\n$ cd $HOME/web-test\n$ LANG=C ls -lR\n.:\ntotal 0\n```\n\n- Start the ESP32 project.   \n```\nidf.py flash monitor\n```\n\n- Create a new folder\n```\nW (6604) HTTP: Creating new foder on Webdav Server. Press Enter when ready.   \n```\n\n```\n$ LANG=C ls -lR\n.:\ntotal 4\ndrwxrwxr-x 2 nop nop 4096 Feb 19 23:26 new_folder\n\n./new_folder:\ntotal 0\n```\n\n- Create a new text file\n```\nW (28975) HTTP: Creating new text file on Webdav Server. Press Enter when ready.\n```\n\n```\n$ LANG=C ls -lR\n.:\ntotal 4\ndrwxrwxr-x 2 nop nop 4096 Feb 20 09:00 new_folder\n\n./new_folder:\ntotal 4\n-rw-rw-r-- 1 nop nop 286 Feb 20 09:00 file.txt\n```\n\n- Create a new binary file\n```\nW (47475) HTTP: Creating new binary file on Webdav Server. Press Enter when ready.\n```\n\n```\n$ LANG=C ls -lR\n.:\ntotal 4\ndrwxrwxr-x 2 nop nop 4096 Feb 26 06:18 new_folder\n\n./new_folder:\ntotal 24\n-rw-rw-r-- 1 nop nop 18753 Feb 26 06:18 esp32.jpeg\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file.txt\n```\n\n\n- Retrieve the file from the server\n```\nW (14114) HTTP: Geting file on Webdav Server. Press Enter when ready.\n```\n\n\n- Copy file\n```\nW (37584) HTTP: Copying file on Webdav Server. Press Enter when ready.\n```\n\n```\n$ LANG=C ls -lR\n.:\ntotal 4\ndrwxrwxr-x 2 nop nop 4096 Feb 26 06:19 new_folder\n\n./new_folder:\ntotal 28\n-rw-rw-r-- 1 nop nop 18753 Feb 26 06:18 esp32.jpeg\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file.txt\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file2.txt\n```\n\n- Move file\n```\nW (19844) HTTP: Moveing file on Webdav Server. Press Enter when ready.\n```\n\n```\n$ LANG=C ls -lR\n.:\ntotal 4\ndrwxrwxr-x 2 nop nop 4096 Feb 26 06:19 new_folder\n\n./new_folder:\ntotal 28\n-rw-rw-r-- 1 nop nop 18753 Feb 26 06:18 esp32.jpeg\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file2.txt\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file3.txt\n```\n\n- Copy folder\n```\nW (40084) HTTP: Copying folder on Webdav Server. Press Enter when ready.\n```\n\n```\n$ LANG=C ls -lR\n.:\ntotal 8\ndrwxrwxr-x 2 nop nop 4096 Feb 26 06:20 copy_folder\ndrwxrwxr-x 2 nop nop 4096 Feb 26 06:19 new_folder\n\n./copy_folder:\ntotal 28\n-rw-rw-r-- 1 nop nop 18753 Feb 26 06:18 esp32.jpeg\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file2.txt\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file3.txt\n\n./new_folder:\ntotal 28\n-rw-rw-r-- 1 nop nop 18753 Feb 26 06:18 esp32.jpeg\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file2.txt\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file3.txt\n```\n\n- Delete file\n```\nW (84614) HTTP: Deleting file on Webdav Server. Press Enter when ready.\n```\n\n```\nt$ LANG=C ls -lR\n.:\ntotal 8\ndrwxrwxr-x 2 nop nop 4096 Feb 26 06:20 copy_folder\ndrwxrwxr-x 2 nop nop 4096 Feb 26 06:20 new_folder\n\n./copy_folder:\ntotal 28\n-rw-rw-r-- 1 nop nop 18753 Feb 26 06:18 esp32.jpeg\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file2.txt\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file3.txt\n\n./new_folder:\ntotal 24\n-rw-rw-r-- 1 nop nop 18753 Feb 26 06:18 esp32.jpeg\n-rw-rw-r-- 1 nop nop   286 Feb 26 06:18 file2.txt\n```\n\n- Delete folder\n```\nW (118894) HTTP: Deleting folder on Webdav Server. Press Enter when ready.\n```\n\n```\n$ LANG=C ls -lR\n.:\ntotal 0\n```\n\n\n# Limitaion   \n- LOCK/UNLOCK is not supported.   \n- https is not supported.   \n\n# Using curl   \nYou can work with files using curl.   \nIn addition to PUT/GET/DELETE, WebDav can use PROPFIND/MKCOL/COPY/MOVE.   \n\n- Find All Files/Folders on Webdav Server:   \n The body is XML and follows the following schema.   \n https://personium.io/docs/en/apiref/307_Get_Property   \n```\ncurl -i -X PROPFIND '192.168.10.42:8080'\n```\n\n- Find a Folder on Webdav Server:   \n```\ncurl -i -X PROPFIND '192.168.10.42:8080/new_folder'\n```\n\n- Find a File on Webdav Server:   \n```\ncurl -i -X PROPFIND '192.168.10.42:8080/new_folder/file.tx'\n```\n\n- Creat new foder on Webdav Server:\n```\ncurl -i -X MKCOL '192.168.10.42:8080/new_folder'\n```\n\n- Upload Text File on Webdav Server:\n```\ncurl -i -X PUT -T 'file.txt' '192.168.10.42:8080/new_folder/file.txt'\n```\n\n- Upload Binary File on Webdav Server:\n```\ncurl -i -X PUT --data-binary @'esp32.jpeg' '192.168.10.42:8080/new_folder/esp32.jpeg'\n```\n\n- Download file on Webdav Server:\n```\ncurl -i -X GET '192.168.10.42:8080/new_folder/file.txt'\n```\n\n- Copy file on Webdav Server:\n```\ncurl -i -X COPY '192.168.10.42:8080/new_folder/file.txt' -H \"Destination: /new_folder/file2.txt\"\n```\n\n- Copy file on Webdav Server by overwriting them:\n```\ncurl -i -X COPY '192.168.10.42:8080/new_folder/file.txt' -H \"Destination: /new_folder/file2.txt\" -H \"Overwrite: T\"\n```\n\n- Move file on Webdav Server:\n```\ncurl -i -X MOVE '192.168.10.42:8080/new_folder/file.txt' -H \"Destination: /new_folder/file3.txt\"\n```\n\n- Move file on Webdav Server by overwriting them:\n```\ncurl -i -X MOVE '192.168.10.42:8080/new_folder/file.txt' -H \"Destination: /new_folder/file3.txt\" -H \"Overwrite: T\"\n```\n\n- Copy folder on Webdav Server:\n```\ncurl -i -X COPY '192.168.10.42:8080/new_folder' -H \"Destination: /copy-folder\"\n```\n\n- Delete file on Webdav Server:\n```\ncurl -i -X DELETE '192.168.10.42:8080/copy-folder/file3.txt'\n```\n\n- Delete folder on Webdav Server:\n```\ncurl -i -X DELETE '192.168.10.42:8080/copy-folder'\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnopnop2002%2Fesp-idf-webdav-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnopnop2002%2Fesp-idf-webdav-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnopnop2002%2Fesp-idf-webdav-client/lists"}