php - 检查上传的文件是否为 csv 格式

标签 php syntax file-upload content-type

我正在用 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/

相关文章:

php - Cakephp搜索不存在的表条目的条件

php - 修剪尾随零而不强制转换为 float

php - Jquery .change 函数使用复选框多次触发

c# - 如何使内联数组初始化像例如字典初始化?

php - 文件上传/移动温度在 nginx 上不起作用

python - 上传文件 - 使输入可见(错误 : ElementNotVisibleException)

java - 安卓内存问题

php - 在 Windows 10 上安装 Magento 2.3 后管理页面空白

php - 如何从table1中选择还没有付款条目的记录?

vb.net - 带有 case OR 运算的 VB.NET select case 语句逻辑是什么?