diff --git a/api/src/Db/Backup.php b/api/src/Db/Backup.php index 506f7fbd9c..326e136135 100644 --- a/api/src/Db/Backup.php +++ b/api/src/Db/Backup.php @@ -1239,18 +1239,30 @@ class Backup * Move uploaded file to backup-directory * * @param array $file values for keys "tmp_name", "name", "size" - * @return ?string success message or null on error + * @return string success or error message */ - public function upload(array $file) : ?string + public function upload(array $file) : string { - if (move_uploaded_file($file['tmp_name'], $filename = $this->backup_dir . '/' . basename($file['name']))) + if (is_uploaded_file($file['tmp_name']) && ($src=fopen($file['tmp_name'], 'r')) && + ($dst=fopen($filename = $this->backup_dir . '/' . basename($file['name']), 'w')) && + stream_copy_to_stream($src, $dst) !== false && fclose($dst)) { $msg = lang("succesfully uploaded file %1", $filename . ', ' . sprintf('%3.1f MB (%d)', $file['size'] / (1024 * 1024), $file['size'])) . ', md5=' . md5_file($file['tmp_name']) . ', sha1=' . sha1_file($file['tmp_name']); - $this->log($filename, $msg); } - return $msg ?? null; + else + { + $msg = lang('Error uploading your backup!'); + } + + if (isset($src)) + { + fclose($src); + } + $this->log($filename, $msg); + + return $msg; } /** diff --git a/setup/lang/egw_de.lang b/setup/lang/egw_de.lang index de629596ec..f70de9d288 100644 --- a/setup/lang/egw_de.lang +++ b/setup/lang/egw_de.lang @@ -324,6 +324,7 @@ error in group-creation !!! setup de Fehler beim Anlegen der Gruppen !!! error listing "dn=%1"! setup de Fehler beim Auflisten von "DN=%1"! error modifying dn=%1: %2='%3'! setup de Fehler beim Ă„ndern von DN=%1: %2='%3'! error searching "dn=%1" for "%2"! setup de Fehler beim Suchen von "DN=%1" nach "%2"! +error uploading your backup! setup de Fehler beim Hochladen Ihres Backups! every setup de Alle export has been completed! setup de Export ist abgeschlossen! failed to mount backup directory! setup de Konnte Datensicherungsverzeichnis nicht mounten! diff --git a/setup/lang/egw_en.lang b/setup/lang/egw_en.lang index 515144d3a9..88c2a2e8d8 100644 --- a/setup/lang/egw_en.lang +++ b/setup/lang/egw_en.lang @@ -324,6 +324,7 @@ error in group-creation !!! setup en Error in group creation! error listing "dn=%1"! setup en Error listing "DN=%1"! error modifying dn=%1: %2='%3'! setup en Error modifying DN=%1: %2='%3'! error searching "dn=%1" for "%2"! setup en Error searching "DN=%1" for "%2"! +error uploading your backup! setup en Error uploading your backup! every setup en Every export has been completed! setup en Export has been completed! failed to mount backup directory! setup en Failed to mount Backup directory!