Index: django/core/meta/__init__.py =================================================================== --- django/core/meta/__init__.py (revision 961) +++ django/core/meta/__init__.py (working copy) @@ -1018,7 +1018,7 @@ return os.path.getsize(method_get_file_filename(field, self)) def method_save_file(field, self, filename, raw_contents): - directory = field.get_directory_name() + directory = os.path.join(field.get_directory_name(), os.path.dirname(filename)) try: # Create the date-based directory if it doesn't exist. os.makedirs(os.path.join(settings.MEDIA_ROOT, directory)) except OSError: # Directory probably already exists. Index: django/core/meta/fields.py =================================================================== --- django/core/meta/fields.py (revision 961) +++ django/core/meta/fields.py (working copy) @@ -422,9 +422,9 @@ def get_directory_name(self): return os.path.normpath(datetime.datetime.now().strftime(self.upload_to)) - def get_filename(self, filename): - from django.utils.text import get_valid_filename - f = os.path.join(self.get_directory_name(), get_valid_filename(os.path.basename(filename))) + def get_filename(self, filename): + from django.utils.text import get_valid_filename + f = os.path.join(self.get_directory_name(), os.path.dirname(filename), get_valid_filename(os.path.basename(filename))) return os.path.normpath(f) class FilePathField(Field):