filemanager: find a new unique name when file copy clashes

This commit is contained in:
Johannes Zellner
2021-03-16 21:24:26 +01:00
parent 10d1bb861a
commit 515d93f5ef
2 changed files with 4 additions and 1 deletions

View File

@@ -2830,9 +2830,12 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout
};
Client.prototype.filesCopy = function (id, type, path, newPath, callback) {
var that = this;
var objpath = (type === 'app' ? 'apps/' : 'volumes/') + id;
put('/api/v1/' + objpath + '/files/' + path, { action: 'copy', newFilePath: decodeURIComponent(newPath) }, {}, function (error, data, status) {
if (error && error.statusCode === 409) return that.filesCopy(id, type, path, newPath + '-copy', callback);
if (error) return callback(error);
if (status !== 200) return callback(new ClientError(status, data));

View File

@@ -512,7 +512,7 @@ app.controller('FileManagerController', ['$scope', '$translate', '$timeout', 'Cl
async.eachLimit(collectedFiles, 5, function (entry, callback) {
var newFilePath = sanitize($scope.cwd + '/' + ((destinationEntry && destinationEntry.isDirectory) ? destinationEntry.fileName : '') + '/' + entry.fullFilePath);
// TODO this will NOT overwrite files in destination!
// This will NOT overwrite but finds a unique new name to copy to
Client.filesCopy($scope.id, $scope.type, entry.fullFilePath, newFilePath, callback);
}, function (error) {
if (error) return Client.error(error);