Image 为什么两台ColdFusion 8服务器使用相同的代码返回不同的值?

Image 为什么两台ColdFusion 8服务器使用相同的代码返回不同的值?,image,coldfusion,coldfusion-8,Image,Coldfusion,Coldfusion 8,在尝试缩放图像并将其添加到PDF之前,我使用了一段代码来验证图像是否有效。基本上: <cfset imgPath = "C:\uploads\images\myimage.jpg" /> <cfdump var="#IsImageFile(imgPath)#" /> Windows 2003上的标准版(32位): 你能在这里附上(或链接到)图片吗?我会在我的系统上做同样的测试。。。一台Mac电脑和另一台Windows 2008。: 使用此函数可确定图像文件是否有效。这

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

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

<cfdump var="#IsImageFile(imgPath)#" />
Windows 2003上的标准版(32位):

你能在这里附上(或链接到)图片吗?我会在我的系统上做同样的测试。。。一台Mac电脑和另一台Windows 2008。

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

它接着建议

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

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

检查get*ImageFormats函数的结果,看看这是否有帮助-尽管阅读jpgs可能是基线


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

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

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


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

我现在有两段代码指向同一个确切的文件(不是原始文件的副本),我也得到了同样的结果。如果您使用的是developer edition,您将其作为独立服务器运行,例如localhost:8500,并且您必须在2003服务器上运行II6,对吗?或者您是在Apache上运行它?实际上,Developer Edition是在Windows 7和IIS 6上运行的。请尝试将标准版许可证复制到您的开发人员计算机上。如果它仍然给出相同的结果,您可以排除Dev-Ed和Standard之间的差异。完成后一定要删除该许可证!对不起,这是一个私人图像,我不允许分享。不用说,我知道图像是无效的,因为当它通过验证时,它会在尝试将其添加到PDF时抛出错误。我只是想知道为什么它在一台服务器上被视为有效,在另一台服务器上被视为无效。没有抛出错误。该页面在一台服务器上返回“是”,在另一台服务器上返回“否”。我指的是您的评论,即“试图将其添加到PDF”时抛出错误。但见上文@Antony的评论。我怀疑他的思路是对的。从我所知,这幅图像是JPEG格式的,但它要么是渐进式的,要么是CMYK格式的,所以iText java库无法正确使用它。
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 
<cfdump var="#FileExists(imgPath)#" />