summaryrefslogtreecommitdiffstats
path: root/application/service
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2015-02-15 16:26:00 +0100
committerFlorian Pritz <bluewind@xinu.at>2015-02-15 16:26:00 +0100
commitd782a261e2b6466348a6dfc040fac24a3937e174 (patch)
treec82cbbea3a964400b05e8a70dada9e72f3d6d212 /application/service
parente458d2129b7443979816c52bf60ed98b6dcd6579 (diff)
s/file/add_file: make file move atomic
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'application/service')
-rw-r--r--application/service/files.php8
1 files changed, 5 insertions, 3 deletions
diff --git a/application/service/files.php b/application/service/files.php
index e31efacc1..a2aa83c3b 100644
--- a/application/service/files.php
+++ b/application/service/files.php
@@ -78,9 +78,11 @@ class files {
file_exists($dir) || mkdir ($dir);
$new_path = $CI->mfile->file($hash);
- // TODO: make this operation atomic (move to temp name, then to final)
- // the source can be a different file system so this might do a copy
- move_uploaded_file($file, $new_path);
+ $dest = new \service\storage($new_path);
+ $tmpfile = $dest->begin();
+ move_uploaded_file($file, $tmpfile);
+ $dest->commit();
+
$CI->mfile->add_file($hash, $id, $filename);
}