2014-10-29 30 views
2

我想使用primefaces高級fileupload,但是我注意到,當擴展名是大寫預覽不起作用。以下是上傳代碼。primefaces fileupload預覽不工作,如果擴展名是大寫

<p:fileUpload fileUploadListener="${myController.handleFileUpload}" 
               mode="advanced" id="fileupload"            
               sizeLimit="2000000" uploadLabel="Add" 
               dragDropSupport="false" previewWidth="190" 
               label="Browse" style="width: 600px;height: 200px" 
               required="true" update="fileDescId" 
               allowTypes="/(\.|\/)(gif|jpe?g|png|GIF|JPG|JPEG|PNG)$/i"/> 

搜索對谷歌並沒有太大的產生,我發現,在allowTypes的末尾添加/i,使正則表達式不區分大小寫,但仍預覽不顯示。如果我點擊上傳,即使預覽沒有顯示,也能成功上傳,但我需要預覽,因爲需要描述圖像。

回答

1

我想出了你的問題。問題在文件\META-INF\resources\primefaces\fileupload\fileupload.js。預覽圖像是僅適用於PNG,JPG和GIF文件,爲此有一個檢查:

//preview 
if($this.isCanvasSupported() && window.File && window.FileReader && $this.IMAGE_TYPES.test(file.name)) 

和模式:

IMAGE_TYPES: /(\.|\/)(gif|jpe?g|png)$/ 

正如你可以在這個地方看到缺乏標誌不區分大小寫驗證。所以我手動添加此標誌

IMAGE_TYPES: /(\.|\/)(gif|jpe?g|png)$/i 

和預覽開始工作,因爲它應該。我檢查了幾次,清理並放了旗子,一切正常。 於是我發送了相應的patch

+0

謝謝@ 0x5a4d它的工作。希望Primefaces很快應用這個補丁,所以我不必重寫它。 – 2014-11-13 07:16:18

+0

修補程序在5.2版本中被接受! – 0x5a4d 2014-12-22 15:39:20