我需要检查上传的文件是否有.csv
或.txt
作为扩展程序,并且我按照以下方式执行操作:
$uploadfiles = $_FILES['uploadfiles'];
echo '<pre>';
var_dump($uploadfiles);
echo '</pre>';
if (is_array($uploadfiles)) {
foreach ($uploadfiles['name'] as $key => $value) {
if ($uploadfiles['error'][$key] == 0) {
$filetmp = $uploadfiles['tmp_name'][$key];
$filename = $uploadfiles['name'][$key];
$filetype = wp_check_filetype(basename($filename), null);
$filetitle = preg_replace('/\.[^.]+$/', '', basename($filename));
$filename = $filetitle . '.' . $filetype['ext'];
$upload_dir = wp_upload_dir();
if ($uploadfiles['type'] != "text/csv" || $uploadfiles['type'] != "text/plain") {
echo "Error, the file $filename has not a valid extension: " . $filetype["ext"];
continue;
}
echo "entre";die();
$i = 0;
while (file_exists($upload_dir['path'] . '/' . $filename)) {
$filename = $filetitle . '_' . $i . '.' . $filetype['ext'];
$i++;
}
$filedest = $upload_dir['path'] . '/' . $filename;
if (!is_writeable($upload_dir['path'])) {
$this->msg_e('Unable to write to directory %s. Is this directory writable by the server?');
return;
}
if (!move_uploaded_file($filetmp, $filedest)) {
$this->msg_e("Error, the file $filetmp could not moved to : $filedest ");
continue;
}
}
}
}
但我一直都会收到此错误:
错误,文件Aruba Airlines门票 - 优惠券(截至2014年4月27日) - Aruba Airlines门票 - 优惠券.csv没有有效的扩展名:csv
我也用这段代码测试:
if ($filetype['type'] != "text/csv" || $filetype['type'] != "text/plain") {
echo "Error, the file $filename has not a valid extension: " . $filetype["ext"];
continue;
}
结果是一样的。如果我这样做:
echo '<pre>';
var_dump($uploadfiles);
echo '</pre>';
我得到了这个结果:
array (size=5)
'name' =>
array (size=1)
0 => string 'Aruba Airlines tickets-coupons (through 27-Apr-2014) - Aruba Airlines tickets-coupons .csv' (length=90)
'type' =>
array (size=1)
0 => string 'text/csv' (length=8)
'tmp_name' =>
array (size=1)
0 => string '/tmp/php53tzhZ' (length=14)
'error' =>
array (size=1)
0 => int 0
'size' =>
array (size=1)
0 => int 14084526
那么错误在哪里?
答案 0 :(得分:3)
我相信你已经在wordpress.stackexchange.com问了你的问题。但这是一个答案,所以问题不会得不到答案。
从文件名中检索文件类型。
如果需要,您可以选择定义mime数组。
<?php wp_check_filetype( $filename, $mimes ) ?>
尝试确定文件的真实文件类型。
如果无法,将使用文件扩展名来确定类型。如果确定扩展名与文件的实际类型不匹配,则将使用正确的文件名和扩展名设置“proper_filename”值。
<?php
$validate = wp_check_filetype_and_ext( $file, $filename, $mimes );
if( $validate['proper_filename'] !== false )
$filename = $validate['proper_filename'];
?>
参考:
http://codex.wordpress.org/Function_Reference/wp_check_filetype
http://codex.wordpress.org/Function_Reference/wp_check_filetype_and_ext