我想在我的服务器上上传三个文件(.txt,.csv和.xml)。 .txt和.xml与下面的代码完美配合。只是,我无法上传.csv文件(没有任何浏览器!)。我得到的错误是:错误!不可用的文件类型:application / x-csv
有可能解决这个问题吗?
代码:
if (isset($_POST['Form']) && isset($_FILES['file'])) {
$types = array('xml', 'csv', 'txt');
$ftypes = array('text/xml', 'application/vnd.ms-excel', 'text/plain');
if (!in_array($_POST['Form']['type'], $types)) {
$errors[] = 'Undefined type';
} elseif (intval($_FILES['file']['size']) == 0) {
$errors[] = 'Zero file size';
} elseif (!in_array($_FILES['file']['type'], $ftypes)) {
$errors[] = 'Unavailable file type: ' . $_FILES['file']['type'];
} else {
$parent_id = intval($_POST['Form']['parent']);
switch ($_POST['Form']['type']) {
case 'xml':
if ($_FILES['file']['type'] != 'text/xml')
$errors[] = "Choosen type and file mime-type doesn't match";
else {
require_once(__DIR__ . '/parsers/xml.php');
}
break;
case 'csv':
if ($_FILES['file']['type'] != 'application/vnd.ms-excel')
$errors[] = "Choosen type and file mime-type doesn't match";
else {
require_once(__DIR__ . '/parsers/csv.php');
}
break;
case 'txt':
if ($_FILES['file']['type'] != 'text/plain')
$errors[] = "Choosen type and file mime-type doesn't match";
else {
require_once(__DIR__ . '/parsers/txt.php');
}
break;
}
}
}
?>
答案 0 :(得分:0)
有一种检查文件扩展名的替代方法,如下所示:
// first get the file extension
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); // csv
$types = array('xml', 'csv', 'txt');
// now check against permissible extensions
if(in_array($ext, $types)){
// allowed
}else{
// not allowed
}
<强>编辑:强>
if (isset($_POST['Form']) && isset($_FILES['file'])) {
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); // csv
$types = array('xml', 'csv', 'txt');
if (!in_array($ext, $types)) {
$errors[] = 'Invalid file type';
}elseif(intval($_FILES['file']['size']) == 0) {
$errors[] = 'Zero file size';
}else{
// $parent_id = intval($_POST['Form']['parent']); you can uncomment it if necessary
switch ($ext) {
case 'xml':
require_once(__DIR__ . '/parsers/xml.php');
break;
case 'csv':
require_once(__DIR__ . '/parsers/csv.php');
break;
case 'txt':
require_once(__DIR__ . '/parsers/txt.php');
break;
}
}
}
答案 1 :(得分:0)