Internet

WordPress上传文件失败

sumi856 · 4月3日 · 2016年

在WordPress的建站过程中,对于常用的文章发布功能,添加媒体是经常使用的,很多用户在使用WordPress自带的 上传附件 功能时,会遇到无法上传问题,一般这种情况会提示类似“发生一个错误,上传“xxx.xx”失败”,抱歉,出于安全考虑,不支持此文件类型”。

搜狗截图20160403101246

这是因为上传文件的类型,WordPress出于安全因素考虑不支持导致的,那么WordPress程序支持哪些类型的附件文件上传呢,WordPress官方网站已经给我们罗列出来。

在wp-includes\functions.php文件中有如下文件

 // Image formats.
 'jpg|jpeg|jpe' => 'image/jpeg',
 'gif' => 'image/gif',
 'png' => 'image/png',
 'bmp' => 'image/bmp',
 'tiff|tif' => 'image/tiff',
 'ico' => 'image/x-icon',
 // Video formats.
 'asf|asx' => 'video/x-ms-asf',
 'wmv' => 'video/x-ms-wmv',
 'wmx' => 'video/x-ms-wmx',
 'wm' => 'video/x-ms-wm',
 'avi' => 'video/avi',
 'divx' => 'video/divx',
 'flv' => 'video/x-flv',
 'mov|qt' => 'video/quicktime',
 'mpeg|mpg|mpe' => 'video/mpeg',
 'mp4|m4v' => 'video/mp4',
 'ogv' => 'video/ogg',
 'webm' => 'video/webm',
 'mkv' => 'video/x-matroska',
 '3gp|3gpp' => 'video/3gpp', // Can also be audio
 '3g2|3gp2' => 'video/3gpp2', // Can also be audio
 // Text formats.
 'txt|asc|c|cc|h|srt' => 'text/plain',
 'csv' => 'text/csv',
 'tsv' => 'text/tab-separated-values',
 'ics' => 'text/calendar',
 'rtx' => 'text/richtext',
 'css' => 'text/css',
 'htm|html' => 'text/html',
 'vtt' => 'text/vtt',
 'dfxp' => 'application/ttaf+xml',
 // Audio formats.
 'mp3|m4a|m4b' => 'audio/mpeg',
 'ra|ram' => 'audio/x-realaudio',
 'wav' => 'audio/wav',
 'ogg|oga' => 'audio/ogg',
 'mid|midi' => 'audio/midi',
 'wma' => 'audio/x-ms-wma',
 'wax' => 'audio/x-ms-wax',
 'mka' => 'audio/x-matroska',
 // Misc application formats.
 'rtf' => 'application/rtf',
 'js' => 'application/javascript',
 'pdf' => 'application/pdf',
 'swf' => 'application/x-shockwave-flash',
 'class' => 'application/java',
 'tar' => 'application/x-tar',
 'zip' => 'application/zip',
 'gz|gzip' => 'application/x-gzip',
 'rar' => 'application/rar',
 '7z' => 'application/x-7z-compressed',
 'exe' => 'application/x-msdownload',
 'psd' => 'application/octet-stream',
 'xcf' => 'application/octet-stream',
 // MS Office formats.
 'doc' => 'application/msword',
 'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
 'wri' => 'application/vnd.ms-write',
 'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
 'mdb' => 'application/vnd.ms-access',
 'mpp' => 'application/vnd.ms-project',
 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
 'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
 'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
 'sldm' => 'application/vnd.ms-powerpoint.slide.macroEnabled.12',
 'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote',
 'oxps' => 'application/oxps',
 'xps' => 'application/vnd.ms-xpsdocument',
 // OpenOffice formats.
 'odt' => 'application/vnd.oasis.opendocument.text',
 'odp' => 'application/vnd.oasis.opendocument.presentation',
 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
 'odg' => 'application/vnd.oasis.opendocument.graphics',
 'odc' => 'application/vnd.oasis.opendocument.chart',
 'odb' => 'application/vnd.oasis.opendocument.database',
 'odf' => 'application/vnd.oasis.opendocument.formula',
 // WordPerfect formats.
 'wp|wpd' => 'application/wordperfect',
 // iWork formats.
 'key' => 'application/vnd.apple.keynote',
 'numbers' => 'application/vnd.apple.numbers',
 'pages' => 'application/vnd.apple.pages',

解决方法一:

这些代码的一行就定义了一种或多种wordpress允许上传的文件类型,其中“=>”前面的是文件的后缀名,后面的是文件描述。你可以根据需要删除或者添加,就可以支持用户上传相应类型的文件。

这种方法比较简单,但是更新后需要重新修改functions.php文件

解决方法二:

还有一种方法是利用主题中的functions.php文件,系统升级后依然有效,但是如果要禁止多种文件类型的时候需要的代码量比较大。

打开主题目录下的functions.php文件,在?>前:

1、输入下面的代码

add_filter('upload_mimes', 'custom_upload_mimes');
function custom_upload_mimes ( $existing_mimes=array() ) {
unset ($existing_mimes['avi']);
unset ($existing_mimes['flv']);
return $existing_mimes;
}

上面的代码禁止上传avi,flv文件类型,如果你需要禁止其他文件,请参考第一种方法第二步中的代码,寻找“=>”左面的文件类型,然后使用 unset ($existing_mimes[‘xxx’]); 来禁止相应的文件类型。

2、我只想让用户上传几种图片类型,上面的方法显然太麻烦了,可以狠一点,用下面的代码。

add_filter('upload_mimes','custom_upload_mimes');
function custom_upload_mimes ( $existing_mimes=array() ) {
unset ($existing_mimes);//禁止上传任何文件
$existing_mimes['jpg|jpeg|gif|png']='image/image';//允许用户上传jpg,gif,png文件
return $existing_mimes;
}

如果你还要允许上传其他格式,重复使用 $existing_mimes[‘格式’]=’描述’; 即可。

解决方法三:

直接禁用文件类型检测,在wp-config.php文件中,添加这样一句代码

define(‘ALLOW_UNFILTERED_UPLOADS’,true);

转自:爱博说,http://blog.aiboshuo.com/804.html

0 条回应