【问题标题】:application/force-download应用程序/强制下载
【发布时间】:2010-12-05 15:15:30
【问题描述】:

我正在创建一个仅上传 zip 文件的脚本,并且我已经完成了以下验证:

if($itemtype != "application/x-zip-compressed"
   && $itemtype != "application/zip" && $itemtype != "application/octet-stream") {
  throw new exception("Your file should be a zip file!");
}

但我有一个文件类型为 application/force-download 的文件,但是当我查看 mime 类型时我找不到它,我是否仍将其添加到验证中(参见上面的代码)?我尝试上传的文件应该是一个普通的 zip 文件……嗯,这就是我的想法

【问题讨论】:

    标签: php scripting zip mime-types


    【解决方案1】:

    修正您的示例中的代码,让您的问题更清晰。

    也就是说,不清楚您是在尝试验证上传的文件还是下载的文件。

    我会大胆猜测一下,您可能正在尝试提供已上传的文件。 Mimetypes 是一种非常糟糕的验证方式,但您的问题实际上可能出在您的虚拟主机上。在过去的类似情况下,我看到共享托管服务提供商在未经我许可的情况下插入各种标头,导致与您可能遇到的问题类似的问题,如果您的问题更准确的话。不幸的是,在这种特殊情况下,解决方案是用 php 重写整个下载服务过程,这本身就有一大堆问题。

    【讨论】:

      【解决方案2】:

      您需要检查文件扩展名,而不是内容类型。特别是,因为不同的浏览器可以发送不同的内容类型。

      【讨论】:

      • 我意识到很多过期了,但由于我在搜索时偶然发现了这一点,不妨向其他任性的旅行者指出这一点......检查扩展并不比检查浏览器提供的内容更好 -类型。两者都很容易被客户操纵,因此不能被信任。如果您想要一些可靠的东西,请使用 Fileinfo 扩展名。它会尝试根据文件内容推断类型,而不是像这样的任何元数据。
      猜你喜欢
      • 2017-07-29
      • 2012-05-04
      • 2023-03-17
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2011-05-14
      相关资源
      最近更新 更多