gpt4 book ai didi

coldfusion - 在 Coldfusion 中检测已上传到服务器上的文件 mimetype

转载 作者:行者123 更新时间:2023-12-04 12:49:49 25 4
gpt4 key购买 nike

我正在尝试在我们的网络服务器上检测文件库的文件类型,因为我们正在实现旨在安全地将文件流式传输到浏览器的代码。以前,这些文件是通过直接 href 存储并呈现给用户的。

我尝试了 3 种不同的方式,全部在我的本地机器上(不是模拟生产环境):

  • 将变量设置为从函数 getPageContext().getServletContext().getMimeType() 返回的值。这会检测文件的一些但不是所有的 MIME 类型。
  • 从 Coldfusion.util.MimeTypeUtils 创建一个对象并调用函数 guessMimeType()。这也会检测文件的一些但不是所有的 MIME 类型。
  • 库中文件的 cffile action="read"。这是我的老板推荐的解决方案,因为他在表单中使用 cffile action="upload"的文件使用了它(并说它有效),但是当我使用它时,cffile 结构始终为空白。

  • 理想情况下,我希望以 100% 的准确度检索位于服务器上的每个文件的 MIME 类型。我编写的代码在我的 repo 副本中检测到大约 99% 的文件,剩下大约 30 个无法识别。其中包括带有新 -x 扩展名的 MS Office 文件和 tgz 压缩文件。

    我想知道是否有一种可靠的方法可以通过使用 CF 代码来检测服务器上存在的任何给定文件的 MIME 类型,并且正在使用的代码是否可以在生产服务器上工作安装了几个应用程序?我的理解是,我引用的第一个函数使用操作系统的 mime-type 库,第二个函数使用 java 对象中的预定列表用于 mime-types。在 Google 和 SO 上搜索并没有产生任何告诉我 CF 可以准确检测自己的文件 MIME 类型的信息,我也没有看到任何表明无法做到的信息。

    编辑:这是在 CF8 环境中。

    最佳答案

    不会有 100% 保证万无一失的方式,因为 MIME 类型是任意映射。

    您将需要使用某人的映射,无论是操作系统还是 JVM。

    您有责任填写操作系统或 JVM 在映射中的任何空白,并使其保持最新状态。

    但是,我总是能够创建一些文件,给它一个 .xyzzy 的扩展名,而你将无法找出它的“mime-type”。

    关于coldfusion - 在 Coldfusion 中检测已上传到服务器上的文件 mimetype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747870/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com