我正在用 php 上传一个文件,如果它是一个 csv 文件,我只想上传它。我相信我的语法适合内容类型。当它是 csv 文件时,它总是转到 else 语句。我在这里做错了什么?
if (($_FILES["file"]["type"] == "text/csv"))
{
}
else
{
}
如果我更改内容类型,它只适用于该格式而不适用于 csv。
最佳答案
mime 类型可能不是 text/csv
一些系统可以读取/保存它们不同。 (例如,有时 IE 将 .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 是否作为文本/纯文本返回,您可以运行 preg_match
以确保它有足够的逗号作为 csv。
关于php - 检查上传的文件是否为 csv 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6654351/