diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js
index 0e4c346e8cc95e39694a6eaed039af9fd782ba4b..a76f9170dc8b345a5d02b71a091a1f492bb0b668 100644
--- a/core/js/oc-dialogs.js
+++ b/core/js/oc-dialogs.js
@@ -144,7 +144,13 @@ var OCdialogs = {
 	*/
 	filepicker:function(title, callback, multiselect, mimetypeFilter, modal) {
 		var self = this;
+		// avoid opening the picker twice
+		if (this.filepicker.loading) {
+			return;
+		}
+		this.filepicker.loading = true;
 		$.when(this._getFilePickerTemplate()).then(function($tmpl) {
+			self.filepicker.loading = false;
 			var dialogName = 'oc-dialog-filepicker-content';
 			if(self.$filePicker) {
 				self.$filePicker.ocdialog('close');
@@ -220,6 +226,7 @@ var OCdialogs = {
 		.fail(function(status, error) {
 			// If the method is called while navigating away
 			// from the page, it is probably not needed ;)
+			self.filepicker.loading = false;
 			if(status !== 0) {
 				alert(t('core', 'Error loading file picker template: {error}', {error: error}));
 			}