diff --git a/gracedb/core/vfile.py b/gracedb/core/vfile.py
index f393b7d68513b3ea9085d5c2b5aa9148d74dfaa1..574bc0143db4faba73254980b50d4e98f666ee66 100644
--- a/gracedb/core/vfile.py
+++ b/gracedb/core/vfile.py
@@ -1,11 +1,18 @@
-
 import os
+import six
 import tempfile
 import logging
 import errno
 import shutil
 import mimetypes
 
+from django.core.files.uploadedfile import InMemoryUploadedFile, \
+    SimpleUploadedFile, TemporaryUploadedFile, UploadedFile
+
+import logging
+logger = logging.getLogger(__name__)
+
+
 class VersionedFile(file):
     """Open a versioned file.
 
@@ -190,3 +197,21 @@ class VersionedFile(file):
         if ',' in filename:
             filename = filename.split(',')[0]
         return os.path.basename(filename)
+
+
+def create_versioned_file(filename, file_dir, file_contents):
+
+    # Get full file path
+    full_path = os.path.join(file_dir, filename)
+
+    # Create file
+    fdest = VersionedFile(full_path, 'w')
+    if isinstance(file_contents, six.string_types):
+        fdest.write(file_contents)
+    elif isinstance(file_contents, (UploadedFile, InMemoryUploadedFile,
+                    TemporaryUploadedFile, SimpleUploadedFile)):
+        for chunk in file_contents.chunks():
+            fdest.write(chunk)
+    fdest.close()
+
+    return fdest.version