2012-01-16 46 views
0

我有一段代碼,用於在嘗試縮放圖像並將其添加到PDF之前驗證圖像是否有效。基本上:爲什麼兩個ColdFusion 8服務器使用相同的代碼返回不同的值?

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

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

我有兩個服務器上相同的圖像文件,並且當我運行兩臺服務器上上面的代碼,其中一個返回「YES」,其他返回「否」(「NO」是正確的)。兩臺服務器都運行ColdFusion 8(版本8,0,1,195765)。返回「否」的是Windows 7 64位版的Developer Edition,另一個是Windows 2003 SP2 32位版的標準版。我看不出操作系統或版本如何對這樣一段簡單的代碼產生影響。什麼可能導致這個?

謝謝。圖像測試代碼的

結果:

在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 
+0

我現在有兩個代碼指向相同的確切文件(不是原始副本),並且我得到相同的結果。 – 2012-01-16 17:07:35

+0

實際上,Developer Edition在Windows 7上運行的是IIS 6。 – 2012-01-16 20:08:14

+0

如果您使用的開發者版本是作爲獨立服務器運行的,例如localhost:8500,並且您必須在2003服務器上運行II6,對嗎?或者你在Apache上運行它? – 2012-01-16 18:42:01

回答

0

你可以在這裏附加(或鏈接)圖像嗎?我會盡我的系統......一個Mac和其他Windows 2008

+0

對不起,這是我不允許分享的私人圖片。不用說,我知道圖像是無效的,因爲當它通過驗證時,它會在嘗試將其添加到PDF時引發錯誤。我只是想知道爲什麼它在一臺服務器上被認爲是有效的而在另一臺服務器上是無效的。 – 2012-01-16 17:36:00

+0

拋出的實際錯誤是什麼? – Leigh 2012-01-16 18:35:56

+0

沒有錯誤發生。該頁面在一臺服務器上返回「是」,另一臺服務器返回「否」。 – 2012-01-16 20:07:36

1

From the documentation相同的測試:

使用該功能來確定圖像文件是否有效。如果圖像文件格式不是由部署ColdFusion的服務器支持的 ,或者圖像文件的路徑名爲空或無效,則此 函數將返回False值。

它繼續提出

要確定哪些圖像文件格式的支持,其中的ColdFusion部署在服務器上,使用GetReadableImageFormatsGetWriteableImageFormats

我看不到你說的哪個服務器是對的和錯的,但似乎問題是由服務器而不是CF造成的。

檢查你從一開始* ImageFormats功能得到,看看有沒有幫助的結果 - 雖然讀取JPG格式可能是基準...

的另一件事是檢查的權限CF在每個服務器上運行 - 如果您手動將文件複製到服務器,則可能會影響文件訪問權限。

0

我知道這可能聽起來很簡單,但如果你用FileExists交換IsImageFile,你會在兩種情況下都得到「是」嗎?

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

是的,我這樣做。謝謝。 – 2012-01-17 18:43:19

0

您可能會檢查CF使用的Java版本。可能存在版本差異,其中一個具有比另一個更多的功能。

相關問題