【问题标题】:Why do two ColdFusion 8 servers return different values with the same code?为什么两个 ColdFusion 8 服务器使用相同的代码返回不同的值?
【发布时间】:2012-01-16 17:05:06
【问题描述】:

我有一段代码用于在尝试缩放图像并将其添加到 PDF 之前验证图像是否有效。基本上:

<cfset imgPath = "C:\uploads\images\myimage.jpg" />

<cfdump var="#IsImageFile(imgPath)#" />

我在两台服务器上都有相同的图像文件,当我在两台服务器上运行上述代码时,一个返回“YES”,另一个返回“NO”(“NO”是正确的)。两台服务器都运行 ColdFusion 8(版本 8,0,1,195765)。返回“NO”的一个是 Windows 7 64 位上的 Developer Edition,另一个是 Windows 2003 SP2 32 位上的 Standard Edition。我看不出操作系统或版本会对这样的简单代码产生什么影响。这可能是什么原因造成的?

谢谢。

图像测试代码结果:

Windows 7(64 位)开发者版:

GetReadableImageFormats: BMP,GIF,JFIF,JPEG,JPEG 2000,JPEG-LOSSLESS,JPEG-LS,JPEG2000,JPG,PNG,PNM,RAW,TIF,TIFF,WBMP 

GetWriteableImageFormats: BMP,GIF,JFIF,JPEG,JPEG 2000,JPEG-LOSSLESS,JPEG-LS,JPEG2000,JPG,PNG,PNM,RAW,TIF,TIFF,WBMP 

FileExists: YES 

IsImageFile: NO

Windows 2003(32 位)标准版:

GetReadableImageFormats: BMP,GIF,JFIF,JPEG,JPEG 2000,JPEG-LOSSLESS,JPEG-LS,JPEG2000,JPG,PNG,PNM,RAW,TIF,TIFF,WBMP 

GetWriteableImageFormats: BMP,GIF,JFIF,JPEG,JPEG 2000,JPEG-LOSSLESS,JPEG-LS,JPEG2000,JPG,PNG,PNM,RAW,TIF,TIFF,WBMP 

FileExists: YES 

IsImageFile: YES 

【问题讨论】:

  • 我现在的两段代码都指向同一个确切的文件(不是原始文件的副本),而且我得到了相同的结果。
  • 如果您使用的是开发者版,则将其作为独立服务器运行,例如localhost:8500,并且您必须在 2003 服务器上运行 II6,对吗?还是您在 Apache 上运行它?
  • 实际上,Developer Edition 是在带有 IIS 6 的 Windows 7 上运行的。
  • 尝试将您的标准版许可证复制到您的开发机器上。如果它仍然给出相同的结果,您可以排除 Dev Ed 与 Standard 之间的差异。完成后请务必删除该许可证!

标签: image coldfusion coldfusion-8


【解决方案1】:

From the documentation

使用此函数来确定图像文件是否有效。这个 如果图像文件格式不是,函数返回 False 值 由部署 ColdFusion 的服务器支持,或者如果 图像文件的路径名为空或无效。

它继续建议

要确定部署 ColdFusion 的服务器支持哪些图像文件格式,请使用 GetReadableImageFormatsGetWriteableImageFormats

我看不出你在哪里说哪个服务器是对的和错的,但是问题似乎是由服务器引起的,而不是由 CF 引起的。

检查您从 get*ImageFormats 函数获得的结果,看看是否有帮助 - 尽管读取 jpgs 可能是基线...

要检查的另一件事是 CF 在每台服务器上运行的权限 - 如果您手动将文件复制到服务器,您可能会受到文件访问权限的干扰。

【讨论】:

    【解决方案2】:

    您能在此处附上(或链接到)图片吗?我将在我的系统上进行相同的测试...一台 Mac 和另一台 Windows 2008。

    【讨论】:

    • 抱歉,这是我不允许分享的私人图片。不用说,我知道图像无效,因为当它通过验证时,它会在尝试将其添加到 PDF 时引发错误。我只是想知道为什么它在一台服务器上被视为有效而在另一台服务器上无效。
    • 没有抛出错误。该页面在一台服务器上返回“YES”,而在另一台服务器上返回“NO”。
    • 我指的是您的评论,即“尝试将其添加到 PDF”时会引发错误。但请参阅上面@Antony 的评论。我怀疑他是在正确的轨道上。
    • 据我所知,图像是 JPEG,但它是渐进式或 CMYK,因此 iText java 库无法正常使用。
    【解决方案3】:

    我知道这听起来可能很简单,但如果您将 IsImageFile 与 FileExists 交换,您会在两种情况下都得到“是”吗?

    <cfdump var="#FileExists(imgPath)#" />
    

    【讨论】:

      【解决方案4】:

      您可以检查 CF 使用的 Java 版本。可能存在版本差异,并且其中一个具有比另一个更多的功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-17
        • 1970-01-01
        • 2013-02-08
        • 1970-01-01
        相关资源
        最近更新 更多