primefaces fileupload预览不工作,如果扩展名是大写

问题描述:

我想使用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,使正则表达式不区分大小写,但仍预览不显示。如果我点击上传,即使预览没有显示,也能成功上传,但我需要预览,因为需要描述图像。

我想出了你的问题。问题在文件\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