检查上传的文件是否为 csv 格式
2022-08-30 10:20:04
我正在用php上传一个文件,如果它是一个csv文件,我只想上传它。我相信我的语法适合内容类型。当它是一个csv文件时,它总是转到其他语句。我在这里做错了什么?
if (($_FILES["file"]["type"] == "text/csv"))
{
}
else
{
}
如果我更改内容类型,它适用于该格式,而不是csv。
我正在用php上传一个文件,如果它是一个csv文件,我只想上传它。我相信我的语法适合内容类型。当它是一个csv文件时,它总是转到其他语句。我在这里做错了什么?
if (($_FILES["file"]["type"] == "text/csv"))
{
}
else
{
}
如果我更改内容类型,它适用于该格式,而不是csv。
哑剧类型可能不是某些系统可以读取/保存它们的不同。(例如,有时IE会以)的形式发送.csv文件),因此您最好的选择是构建一个允许值的数组并对其进行测试,然后找到所有可能的值进行测试。text/csv
application/vnd.ms-excel
$mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv');
if(in_array($_FILES['file']['type'],$mimes)){
// do something
} else {
die("Sorry, mime type not allowed");
}
如果您希望可以进一步检查mime是否以文本/纯文本形式返回,则可以运行a以确保其中有足够的逗号作为csv。preg_match
CSV 文件有很多可能的 MIME 类型,具体取决于用户的操作系统和浏览器版本。
以下是我当前验证 CSV 文件的 MIME 类型的方式:
$csv_mimetypes = array(
'text/csv',
'text/plain',
'application/csv',
'text/comma-separated-values',
'application/excel',
'application/vnd.ms-excel',
'application/vnd.msexcel',
'text/anytext',
'application/octet-stream',
'application/txt',
);
if (in_array($_FILES['upload']['type'], $csv_mimetypes)) {
// possible CSV file
// could also check for file content at this point
}