为什么我得到的 .csv 文件的 mime 类型为“application/octet-stream”?

2023-12-20

我正在开发一个必须将 Excel 文件导入 MySQL 的 PHP 应用程序。所以我需要将excel文件转换为.csv格式。但是当我想使用它来获取它的类型时$_FILE['something']['type'],我得到application/octet-stream作为其哑剧类型;
我认为这里有问题。因为我将下面的列表收集为 .csv 文件 mime 类型:

text/comma-separated-values,  
text/csv,  
application/csv, 
application/excel, 
application/vnd.ms-excel, 
application/vnd.msexcel

怎么了 ?


在这样的时期,官方 HTTP 规范总是很有帮助的。从RFC 2616 7.2.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html#sec7(我的重点是补充):

任何包含实体主体的 HTTP/1.1 消息都应该包含定义该主体的媒体类型的 Content-Type 头字段。当且仅当 Content-Type 字段未给出媒体类型时,接收方可以尝试通过检查其内容和/或用于标识资源的 URI 的名称扩展来猜测媒体类型。如果媒体类型仍然未知,接收者应该将其视为“应用程序/八位字节流”类型.

您的问题的原因是接受文件上传的服务器本身不知道上传的文件类型。为什么?因为它依赖于发送文件的 HTTP 消息来指定Content-Type标头以确定确切的 mime 类型。浏览器可能没有发送Content-Type标头和服务器已假设application/octet-stream根据上面的官方 HTTP 规范摘录。上传文件的客户端也可能选择不确定其上传文件的 MIME 类型并发送Content-Type: application/octet-stream标头本身。

Now, when we consider this in conjunction with the PHP manual entry regarding POST file uploadsdocs http://www.php.net/manual/en/features.file-upload.post-method.php, we see the following:

$_FILES['userfile']['type']

文件的 MIME 类型(如果浏览器提供了此信息)。一个例子是“图像/gif”。然而,这种 mime 类型不会在 PHP 端进行检查,因此不要认为它的值是理所当然的。

正如你所看到的,即使$_FILES['userfile']['type']被指定,它只对应于Content-Type客户端发送的标头。此信息很容易被伪造,不应依赖。如果你需要sure上传的文件属于特定类型,您必须自行验证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我得到的 .csv 文件的 mime 类型为“application/octet-stream”? 的相关文章

  • 在关联数组中查找重复值并将它们添加到计数中

    您好 我正在尝试计算关联数组中重复值的数量 如下所示 array 3 0 gt array 3 Title gt string 25 hello Price gt int 50 Count gt int 1 1 gt array 3 Tit
  • 获取结果到文本字段

    我有两个可以应用更改的表 但我需要回应基于特定标准所做的更改 现在 对于第一个表 所做的任何更改都会被回显 但是我不确定如果对第二个表 其他 进行更改 如何回显这些更改 if isset POST submit if isset POST
  • Web 服务器和 servlet 容器之间的区别

    Web 服务器 和 Servlet 容器 有什么区别 一般来说 所有 Web 服务器也是 Servlet Web 容器 反之亦然吗 我一直在使用 Apache Tomcat for JSP 和 Apache for PHP 但无法弄清楚这两
  • 将结果从 pdo 发送到 ajax 时遇到问题

    我想做的是 如果用户成功注册 pdo 将提供信息并将其发送到 ajax 如果用户注册与否 ajax 将发送消息 在我将这个条件放入我的 pdo 中后 它工作正常 现在它不会再插入 并且 ajax 告诉 注册用户时出错 每时每刻 script
  • PHP 数组转换为 Javascript 数组

    下午都 下面的代码工作完美 但是 我需要将 php sql 数组的每一行拉出并放入脚本 var 中 关于如何编写可以做到这一点的 while 循环有什么想法吗 谢谢你的帮助 var enableDays enableDays push 附加
  • Laravel 强制 SSL 给出“此网页有重定向循环”

    我正在使用 Laravel 4 1 并且想要在整个站点范围内强制使用 SSL 我的应用程序部署在 Heroku 上 将其添加到任一App before或作为过滤器 if Request secure return Redirect secu
  • PHP 的 Dom Node 查找 href 属性问题

    我正在尝试使用 php domDocument 从某些数据的 url 中提取 href 以下拉动网址的锚点 但我想要网址 events i race 1 trim cols gt item 1 gt nodeValue 如果有帮助的话 这里
  • 在 Woocommerce 的单个产品页面中添加产品注释字段

    我要创建定制订单备注 in 单品用户的详细信息页面 这个可以使用 php 来完成 无需插件 我已附上屏幕截图和网站 URL 以供参考 已尝试使用此代码function php它在结账页面上工作 而不是在产品信息页 任何人都可以帮助我实现这一
  • 在 PHP 中扩展单例

    我正在使用一个 Web 应用程序框架 其中一部分由许多服务组成 所有服务均以单例形式实现 它们都扩展了一个 Service 类 其中实现了单例行为 如下所示 class Service protected static instance p
  • 新行分隔符不适用于 group_concat 函数

    我有一根绳子 name lastname name2 lastname2 包含数据库表中的值 我想显示它 喜欢 name lastname name2 lastname2 我使用 group concat 函数 它适用于逗号分隔符 但我需要
  • php 发送带有图像的电子邮件

    我正在尝试发送一封带有图片的电子邮件 我的电子邮件正文是 当我收到电子邮件时 我看不到图片 相反 我 看 img src http planet earth bogus us icons secret pictures gif 我知道这是因
  • Laravel Eloquent 多对多查询 whereIn

    在我的应用程序中 我更新了关系one to many to many to many我正在尝试找出一种方法来保留相关功能 假设我有两个相关的表 例如狗和主人 如果我有很多主人 并且我想获取这些主人的狗 ID 列表 我应该如何雄辩地做到这一点
  • 无法在Phalcon php中调用除indexAction之外的indexController的操作

    我的 xampp htdocs 目录中有一个名为 phalcon 的简单项目 并且我将 apache 配置为指向该文件夹 以便我可以在浏览器中转到 phalcon 当我尝试打开索引 默认 以外的索引控制器视图时 会出现问题 例如 我在索引控
  • PHP 中的 __DIR__ 和 dirname(__FILE__) 有什么区别吗?

    对我来说看起来是一样的 但我不确定 因为有很多项目使用dirname FILE 他们的结果是完全一样的 所以 这没有什么区别 例如 以下两行 var dump dirname FILE var dump DIR 两者都会给出相同的输出 st
  • PHP随机输出数组元素

    我如何从大约 20 个元素的数组中随机回显 5 个元素 Thanks 这有效吗 values array rand input 5 或者 作为更灵活的功能 function randomValues input num 5 return a
  • empty() 在对象的非空属性上返回 TRUE

    我遇到了一个非常奇怪且意想不到的问题 empty 正在返回TRUE由于我不知道的原因 在一处非空的房产上 class MyObject private property public function construct property
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • 在 Bluemix 中激活 PHP 扩展

    这纯粹是 Bluemix 问题 我的代码在本地主机上顺利运行 但是当我将其迁移到 Bluemix 时 我的数据库连接失败了 检查日志 我发现问题 调用未定义的函数 mysqli init HTTP 响应 500 我发现扩展已被禁用以使其更小
  • 如何使用多个分隔符拆分列表?

    基本上 我想在文本区域中输入文本 然后使用它们 例如 variable1 variable2 variable3 variable1 variable2 variable3 variable1 variable2 variable3 我知道
  • SplFileObject + LimitIterator + 偏移量

    我有两行数据文件 两行仅用于我的示例 实际上 该文件可以包含数百万行 并且我使用 SplFileObject 和 LimitIterator 进行偏移 但这种组合在某些情况下会有奇怪的行为 offset 0 file new SplFile

随机推荐

  • ColdFusion:cfspreadsheet 本地化日期格式

    我的问题基本上与this one https stackoverflow com questions 12926719 coldfusion cfspreadsheet reading date incorrectly 但我无法更改 Exc
  • WPF 命中测试矩形区域

    我有一个 WrapPanel 其中包含任意数量的锯齿状大小的元素 我想为我的项目实现拖动选择 如何对一个点进行 HitTest 似乎很明显 但如何找到矩形区域内的所有项目 您可以使用VisualTreeHelper HitTest http
  • XPTY0020:查找树的根:上下文项不是节点

    XSLT 中的这个错误让我难住了 XPTY0020 Finding root of tree the context item is not a node 我的 XSLT 指出错误所在 只是一个普通的旧变量声明
  • 内联 require() 在 requirejs 中工作,但不适用于优化的 almond 构建

    正如标题所示 我的内联 require 调用在非优化的 requirejs 运行中工作 但在使用 grunt 和 almondjs 构建时不起作用 Uncaught Error undefined missing views some vi
  • 为什么我要使用仅限制单一类型的 where 约束?

    所以我在这里查看 MSDN 示例 类型参数的约束 C 编程指南 http msdn microsoft com en us library d5x73970 28v vs 100 29 aspx第一个示例显示了以下泛型类 定义了where单
  • 使用 QPainter 在 Widget 之间画一条线

    我正在开发一个应用程序 我需要能够在两个之间画一条线QWidget对象 我已经尝试了很多事情 但我目前的尝试 我think方向正确 我只是觉得我错过了一些东西 就是拥有包含的小部件 我称之为DrawWidget并持有QGridLayout认
  • 为什么不能使用带有动态参数的匿名函数?

    今天刚遇到这个 匿名函数或方法组不能用作组成部分 动态绑定操作的值 当试图做的时候 static R ifNotNull
  • 如何使用 CodePipeline 删除 S3 中的文件

    我创建了一个 CodePipeline 它从 CodeCommit 存储库获取输入 文件 并将文件部署到 S3 存储桶 当我删除 CodeCommit 存储库中的文件时 管道不会删除相应 S3 存储桶中的文件 简而言之 我希望我的 S3 存
  • SingleChildScrollView“剪切”屏幕

    这是我正在开发的登录页面的屏幕 https ibb co X22g4rc https ibb co X22g4rc 当键盘出现时 它表明存在溢出 这似乎是正常的 https ibb co mzVLJ4f https ibb co mzVLJ
  • jQuery 无法识别 Symfony JSON?

    我正在尝试从 Symfony 获取 JSON 数据 但它似乎无法正常工作 下面是 symfony 代码片段 this gt getResponse gt setHttpHeader Content Type application json
  • 在 Spring Boot 应用程序中更改 autocommit=true 的优点和缺点?

    对我来说 自动提交似乎完全被 Spring Hibernate 配置覆盖 并且这个属性在这样的配置中绝对不起任何作用 但我想以某种方式确认这一点 Spring引导1 5 10 RELEASE版本 数据库是PostgreSQL 9 5 6 数
  • 计算 Python 列表中 True 布尔值的数量

    我有一个布尔值列表 True True False False False True 我正在寻找一种方法来计算数量True在列表中 所以在上面的例子中 我希望返回的是3 我已经找到了查找特定元素出现次数的示例 但是由于我正在使用布尔值 是否
  • 发送 Facebook 请求并获得礼物 FB API

    我已经按照文档在 facebook 上成功实现了我的应用程序的 发送请求 功能here http developers facebook com docs reference dialogs requests 现在 如果用户 A 接受用户
  • shlex.split() 和 re.split() 有什么区别?

    所以我用了shlex split 最近将命令拆分为参数subprocess Popen 功能 我记得很久以前我也用过re split 函数使用指定的特定分隔符分割字符串 有人能指出它们之间的本质区别是什么吗 每个功能最适合什么场景 shle
  • 使用 WMI 挂载网络驱动器

    尝试编写 WMI 类函数以使用登录计算机的凭据在任何计算机 远程或本地 上安装网络驱动器 这是我为服务台工作人员编写的一个较大项目的类 用于在远程 PC 上进行一线修复 技术人员输入机器名称或 IP 地址 应用程序会连接到它 并允许技术人员
  • Vbscript - 比较并复制文件夹中的文件(如果比目标文件新)

    我正在尝试设计这个脚本 该脚本应该用作很多用户的登录脚本的一部分 该脚本基本上应该采用源文件夹和目标文件夹 因为基本上只是确保目标文件夹具有与源文件夹完全相同的内容 但仅当源文件的修改日期标记比目标文件新时才进行复制 我一直在思考这个基本的
  • 具有内部构造函数的最小起订量具体类

    我正在尝试最小起订量一个具有内部构造函数的具体类 即MyAssembly I have public class MyClass internal MyClass other methods including factory instan
  • 如何获得资源路径?

    我想使用 RandomAccessFile 类来访问我的应用程序附带的文件 然而 该类只接受一个字符串 它是文件的路径 如果我将文件放置在资产目录之类的位置 如何构建该文件的路径 我知道我可以使用 getAssets 方法来读取资源 但这些
  • 如何在 php docker 容器上安装/启用 pdo-odbc 驱动程序?

    我目前在为我的 php 应用程序编写 Dockerfile 时遇到问题 我的 Dockerfile 可以工作 但缺少连接到 MS SQL Server 数据库所需的 pdo odbc 驱动程序 这是我当前的 Dockerfile FROM
  • 为什么我得到的 .csv 文件的 mime 类型为“application/octet-stream”?

    我正在开发一个必须将 Excel 文件导入 MySQL 的 PHP 应用程序 所以我需要将excel文件转换为 csv格式 但是当我想使用它来获取它的类型时 FILE something type 我得到application octet