diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py
index 53c7e453ddf032bd9a6e72786ef407f9c1f1f3b0..7a239275041d6d9480a5e8a096f2a1264983905d 100644
--- a/lms/djangoapps/courseware/module_render.py
+++ b/lms/djangoapps/courseware/module_render.py
@@ -379,6 +379,12 @@ def modx_dispatch(request, dispatch=None, id=None, course_id=None):
     if request.FILES:
         for fileinput_id in request.FILES.keys():
             inputfiles = request.FILES.getlist(fileinput_id)
+
+            if len(inputfiles) > settings.MAX_FILEUPLOADS_PER_INPUT:
+                too_many_files_msg = 'Submission aborted! Maximum %d files may be submitted at once' %\
+                    settings.MAX_FILEUPLOADS_PER_INPUT
+                return HttpResponse(json.dumps({'success': too_many_files_msg}))
+
             for inputfile in inputfiles:
                 if inputfile.size > settings.STUDENT_FILEUPLOAD_MAX_SIZE: # Bytes
                     file_too_big_msg = 'Submission aborted! Your file "%s" is too large (max size: %d MB)' %\
diff --git a/lms/envs/common.py b/lms/envs/common.py
index c412a3c8cd8bed3ac769751a9f82f3948aba6474..14a9627b4010ef9a43e4a9b88fe5cf2f401b3f6d 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -141,6 +141,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
 )
 
 STUDENT_FILEUPLOAD_MAX_SIZE = 4*1000*1000 # 4 MB
+MAX_FILEUPLOADS_PER_INPUT = 10
 
 # FIXME:
 # We should have separate S3 staged URLs in case we need to make changes to