diff --git a/applications/default/extensions/file/file.js b/applications/default/extensions/file/file.js
index <HASH>..<HASH> 100644
--- a/applications/default/extensions/file/file.js
+++ b/applications/default/extensions/file/file.js
@@ -86,23 +86,31 @@ file.field = function(fields, callback) {
     },
     beforeCreate: function(settings, item, next) {
       var fileId = item[settings.name];
+
       application.load('file', fileId, function(error, file) {
         if (error) {
           return next(error);
         }
 
+        // @todo: move the file without reading it to memory for performance and
+        // to avoid memory leaks.
         fs.readFile(file.path, function(error, data) {
           if (error) {
             return next(error);
           }
 
-          var filePath = path.join(application.settings.applicationDir, 'public/files', settings.name, file.filename);
+          // Create a new filename based on file ID and file extension.
+          var fileName = fileId + path.extname(file.path);
+
+          // Create a path for file based on field name and the new filename.
+          var filePath = path.join(application.settings.applicationDir, 'public/files', settings.name, fileName);
+
           self.createPathAndSave(filePath, data, function(error) {
             if (error) {
               return next(error);
             }
 
-            file.path = file.filename;
+            file.path = path.join(settings.name, fileName);
             file.temporary = false;
             file.save(next);
           });
Using UUID for filename to avoid overwriting files.