diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js
index 9b2e2c00f60c8d12b4d719ac441cfb11e833a41b..0b78d200b940271f0a622dbdd48e2be261cb0248 100644
--- a/apps/files_sharing/js/public.js
+++ b/apps/files_sharing/js/public.js
@@ -148,11 +148,14 @@ OCA.Sharing.PublicApp = {
 
 		if (this.fileList) {
 			// TODO: move this to a separate PublicFileList class that extends OCA.Files.FileList (+ unit tests)
-			this.fileList.getDownloadUrl = function (filename, dir) {
-				if ($.isArray(filename)) {
+			this.fileList.getDownloadUrl = function (filename, dir, isDir) {
+				var path = dir || this.getCurrentDirectory();
+				if (filename && !_.isArray(filename) && !isDir) {
+					return OC.getRootPath() + '/public.php/webdav' + OC.joinPaths(path, filename);
+				}
+				if (_.isArray(filename)) {
 					filename = JSON.stringify(filename);
 				}
-				var path = dir || FileList.getCurrentDirectory();
 				var params = {
 					path: path,
 					files: filename
diff --git a/apps/files_sharing/tests/js/publicAppSpec.js b/apps/files_sharing/tests/js/publicAppSpec.js
index 1ea5f7ed1bc660dda72097746e7359a484a8d45c..74f008025e1364878a82b299411c26c3ee4da5dc 100644
--- a/apps/files_sharing/tests/js/publicAppSpec.js
+++ b/apps/files_sharing/tests/js/publicAppSpec.js
@@ -101,12 +101,12 @@ describe('OCA.Sharing.PublicApp tests', function() {
 
 			it('returns correct download URL for single files', function() {
 				expect(fileList.getDownloadUrl('some file.txt'))
-					.toEqual(OC.webroot + '/index.php/s/sh4tok/download?path=%2Fsubdir&files=some%20file.txt');
-				expect(fileList.getDownloadUrl('some file.txt', '/anotherpath/abc'))
-					.toEqual(OC.webroot + '/index.php/s/sh4tok/download?path=%2Fanotherpath%2Fabc&files=some%20file.txt');
+					.toEqual('/owncloud/public.php/webdav/subdir/some file.txt');
+				expect(fileList.getDownloadUrl('some file.txt', '/another path/abc'))
+					.toEqual('/owncloud/public.php/webdav/another path/abc/some file.txt');
 				fileList.changeDirectory('/');
 				expect(fileList.getDownloadUrl('some file.txt'))
-					.toEqual(OC.webroot + '/index.php/s/sh4tok/download?path=%2F&files=some%20file.txt');
+					.toEqual('/owncloud/public.php/webdav/some file.txt');
 			});
 			it('returns correct download URL for multiple files', function() {
 				expect(fileList.getDownloadUrl(['a b c.txt', 'd e f.txt']))