Scripting WebDAV

Last Updated: Feb 19, 2024
documentation for the dotCMS Content Management System

Web-based Distributed Authoring and Versioning, or WebDAV, is an extension of the HTTP protocol that allows you to create a connection between your local computer and a server to easily transfer files between machines. For WebDav the command line tool Curl is used to manipulate files on the server.

To learn how to install WebDav take a look at Upload via WebDav.

When working with WebDAV, we recommend using Cyberduck — particularly in a Windows environment, as Windows support for WebDAV was announced as deprecated in November 2023.

Basic WebDAV Commands

There are four basic commands in Curl for WebDAV, Reading, Deleting, Renaming and Uploading.

Reading Files and Folders

WebDAV uses the Curl get command to reading files or folders. The get in Curl is implied so our command would look like:

curl 'demo.dotcms.com/webdav/live/1/'

In dotCMS the url pattern is {server}/webdav/{live or working}/{languageid}

If you are looking to get a response see Get Response Code.

Deleting Files and Folders

The -X DELETE command is used to delete an existing file or folder at the path specified.

To delete a folder:

curl -X DELETE 'demo.dotcms.com/webdav/live/1/test'

To delete a file:

curl -X DELETE 'demo.dotcms.com/webdav/live/1/test.txt'

Renaming Files

To rename a file we use the Curl -X MOVE command because we are essentially creating a new file with the new name moving the contents of the old file to the new one and then deleting the file.

curl -X MOVE --header
'Destination: demo.dotcms.com/webdav/live/1/new.txt'
'demo.dotcms.com/webdav/live/1/old.txt'

Creating New Folder

Use -X MKCOL to make a new directory:

curl -X MKCOL 'demo.dotcms.com/webdav/live/1/new_folder'

Uploading Files

The put command is used for uploading a file to WebDAV

curl -T '/path/to/local/file.txt' 'demo.dotcms.com/webdav/live/1/test'

In this example file.txt which is located at /path/to/local is being uploaded to our folder on WebDAV test

Curl –Options

Curl provides many useful options to enhance the basic calls.

Setting a Username and Password

To set a username and password for WebDav in curl use the following command:

curl --user 'userName:pass' 'demo.dotcms.com/webdav/live/1'

In this example userName is our chosen username and pass is the password to be set.

HTTP Authentication

To utilize your username and password set above you use authentication. There are three main option commands for authentication in Curl --basic, --digest, and --anyauth.

--anyauth chooses which authentication type is best for your situation between --basic and --digest. Even though you can choose manually which authentication you would like to use --anyauthis the recommended way to do authentication, especially for those new to Curl and WebDAV.

Below show all three authentication commands

curl --user 'user:pass' 'demo.dotcms.com/webdav/live/1' --basic
curl --user 'user:pass' 'demo.dotcms.com/webdav/live/1' --digest
curl --user 'user:pass' 'demo.dotcms.com/webdav/live/1' --anyauth

Get Response Code

Often in WebDAV you will want a response to know if the request was preformed. One option to know if the request was completed is to use the -sw option:

curl --user 'user:pass' -X DELETE 'demo.dotcms.com/webdav/live/1/test' -sw '%{http_code}'

On this page

×

We Dig Feedback

Selected excerpt:

×