diff --git a/src/wp-includes/js/plupload/handlers.js b/src/wp-includes/js/plupload/handlers.js
index 5ee7a43779..cadcc23d08 100644
--- a/src/wp-includes/js/plupload/handlers.js
+++ b/src/wp-includes/js/plupload/handlers.js
@@ -285,7 +285,7 @@ function uploadError(fileObj, errorCode, message, uploader) {
wpFileError(fileObj, pluploadL10n.upload_failed);
break;
case plupload.FILE_EXTENSION_ERROR:
- wpFileError(fileObj, pluploadL10n.invalid_filetype);
+ wpFileExtensionError( uploader, file, pluploadL10n.invalid_filetype );
break;
case plupload.FILE_SIZE_ERROR:
uploadSizeError(uploader, fileObj);
@@ -340,6 +340,11 @@ function uploadSizeError( up, file, over100mb ) {
up.removeFile(file);
}
+function wpFileExtensionError( up, file, message ) {
+ jQuery('#media-items').append('
');
+ up.removeFile(file);
+}
+
jQuery(document).ready(function($){
$('.media-upload-form').bind('click.uploader', function(e) {
var target = $(e.target), tr, c;
diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php
index dfb4812241..3e860dc4bc 100644
--- a/src/wp-includes/media.php
+++ b/src/wp-includes/media.php
@@ -2918,7 +2918,7 @@ function _wp_image_editor_choose( $args = array() ) {
}
/**
- * Prints default plupload arguments.
+ * Prints default Plupload arguments.
*
* @since 3.4.0
*/
@@ -2930,6 +2930,11 @@ function wp_plupload_default_settings() {
return;
$max_upload_size = wp_max_upload_size();
+ $allowed_extensions = array_keys( get_allowed_mime_types() );
+ $extensions = array();
+ foreach ( $allowed_extensions as $extension ) {
+ $extensions = array_merge( $extensions, explode( '|', $extension ) );
+ }
$defaults = array(
'runtimes' => 'html5,flash,silverlight,html4',
@@ -2939,6 +2944,7 @@ function wp_plupload_default_settings() {
'silverlight_xap_url' => includes_url( 'js/plupload/plupload.silverlight.xap' ),
'filters' => array(
'max_file_size' => $max_upload_size . 'b',
+ 'mime_types' => array( array( 'extensions' => implode( ',', $extensions ) ) ),
),
);