primefaces 文件上传下载的配置

本文详细介绍了如何使用PrimeFaces组件实现文件的简单与高级上传功能,并提供了上传后的字节流获取方法及下载功能实现。包括上下文参数配置、表单属性设置、文件上传监听、字节流操作等关键步骤。

结合了几篇外国友人的帖子和primefaces文档:

一、上传

1、在web.xml中添加

<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>auto|native</param-value>
</context-param>

本人亲测commons不可用,就算加入filter

2.1 简单方式上传

<h:form enctype="multipart/form-data">
    <p:fileUpload value="#{fileBean.file}" mode="simple" />
    <p:commandButton value="Submit" ajax="false"/>
</h:form>

这个是针对mode=simple的上传方案,如果mode=advanced,去掉enctype="multipart/form-data"不然界面会出现错误
这里,commandButton的ajax必须是false

2.2 高级方式上传

            <p:panelGrid columns="2">
                <h:outputLabel for="image" value="Select Image: *" />
                <p:fileUpload  fileUploadListener="#{productBean.handleFileUploadx}" mode="advanced" label="选择文件" uploadLabel="点此上传" cancelLabel="取消" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/> 

                <f:facet name="footer">
                    <p:commandButton value="Submit"  >
                        <f:ajax render="testimg"/>
                    </p:commandButton>
                </f:facet>
            </p:panelGrid>
3、得到byte[]

前台

            <p:graphicImage id="testimg" value="#{productBean.image}" width="50" height="50" style="">
            </p:graphicImage>

后台


    private StreamedContent image;

    get

    set

    public void handleFileUploadx(FileUploadEvent event) {
        UploadedFile f=event.getFile();
        setFile( event.getFile());
        try {
            InputStream stream;
            stream = file.getInputstream();
            byte[] bt=IOUtils.toByteArray(stream);
            ByteArrayInputStream img=new ByteArrayInputStream(bt);
            setImage( new DefaultStreamedContent(img,"image/jpg"));
        } catch (IOException ex) {
            Logger.getLogger(ProductBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

这里 IOUtils是Apache的common-io在本人的资源中提供下载,当然,得到字节流之后你可以把它存入数据库,需要的时候在取出来,我这里只是展示了上传完文件之后显示上传文件的功能。

如果你想把上传的file保存成文件

               InputStream stream=file.getInputstream();
                FileOutputStream fos=new FileOutputStream(new File("/dd.jpg"));
                int read=0;
                byte[] bytes=new byte[1024];
                while((read=stream.read(bytes))!=-1)
                {
                    fos.write(bytes,0,read);
                }

二、下载

 前台

<p:commandLink value="Download" ajax="false">
<p:fileDownload value="#{fileBean.downfile}"/>
</p:commandLink>

后台

初始化的时候
             InputStream stream = this.getClass().getResourceAsStream("./ok.png");
            setDownfile(new DefaultStreamedContent(stream, "image/jpeg","dx.jpg"));

这样,就可以把上传资源以二进制的方式存入数据库,需要下载的时候,在从数据库中取出以提供下载。

三、实体类的二进制表示

@Lob

private byte[] file;

set

get

PrimeFaces主要标签学习。 1 PrimeFaces综述 3 1.1 安装 3 1.2 配置,JSF2.0环境下用PrimeFace2.x 4 1.3 Hello World入门示例 4 1.4 UI组件: 4 2 UI组件 5 2.1 布局 5 2.1.1 Layout 页面布局 5 2.1.2 Panel用于包含其它组件,提供象windows窗口式的外观。 8 2.1.3 TabView 分页式面板组件 8 2.1.4 OutputPanel 仅用于显示元素 9 2.1.5 Fieldset 9 2.1.6 Dashboard 仪表盘 10 2.1.7 Themeswitcher 主题切换器,动态切换主题 11 2.1.8 Separator空白分隔区域 11 2.1.9 Spacer行内加空格 11 2.2 菜单 11 2.2.1 Menu 11 2.2.2 Menubar 12 2.2.3 MenuButton 13 2.2.4 Toolbar 13 2.2.5 Stack :堆叠式菜单(竖向) 13 2.2.6 Dock :动画鱼眼式菜单(横向) 14 2.3 按钮: 15 2.3.1 Button 15 2.3.2 CommandButton 15 2.3.3 CommandLink 17 2.3.4 ContextMenu 17 2.3.5 HotKey 17 2.4 输入组件 18 2.4.1 文本输入 18 2.4.1.1 Editor 18 2.4.1.2 Password 19 2.4.1.3 Password Strength 19 2.4.1.4 inputMask 输入掩码,实现格式化输入。 19 2.4.1.5 InputText 20 2.4.1.6 InputTextarea 20 2.4.1.7 Watermark :文本输入内容提示 20 2.4.1.8 Keyboard 显示一个虚拟键盘,用以支持输入字符。 21 2.4.1.9 Inplace 替换文本 22 2.4.2 选择式输入 22 2.4.2.1 AutoComplete :自动补全 22 2.4.2.2 PickList 选择列表 25 2.4.2.3 Slider 滑动条 26 2.4.2.4 Spinner 27 2.4.3 其它格式数据的输入: 27 2.4.3.1 Spreadsheet电子表格 27 2.4.3.2 Calendar 各种格式的日期输入与显示 28 2.4.3.3 Schedule 日程计划输入组件 31 2.4.3.4 Captcha :变形字符验证 31 2.4.3.5 Color Picker 32 2.5 集合(复杂格式)数据的输出与显示: 33 2.5.1 BreadCrumb :层次化页面导航条 >…>….> 33 2.5.2 Accordion:一个容器组件,它用tab动态地显示折叠或展开过程。 34 2.5.3 Carousel:多用途,标签式、分布式显示 35 2.5.4 Galleria 图片陈列廊 36 2.5.5 LightBox :图片加亮显示 37 2.5.6 DataGrid 数据栅格 37 2.5.7 DataList 用列表的形式显示数据,每个栅格可显示多个数据项 39 2.5.8 DataTable数据表格 41 2.5.9 Tree 树形显示 46 2.5.10 TreeTable 树表 47 2.5.11 DragDrop 50 2.5.11.1 Draggable组件: 50 2.5.11.2 Droppable组件 51 2.5.12 Charts基于flash的图形生成与显示 52 2.6 数据导出: 54 2.6.1 Data Exporter 54 2.6.2 Printer 56 2.7 状态: 56 2.7.1 ProgressBar 56 2.7.2 NotificationBar 57 2.8 对话框: 58 2.8.1 ConfirmDialog 58 2.8.2 Dialog 58 2.9 图形图像多媒体: 59 2.9.1 ImageCompare :提供丰富的接口比较两副图像 59 2.9.2 Graphic Text 文本图象化显示 60 2.9.3 ImageCropper 60 2.9.4 ImageSwitch 61 2.9.5 Google Maps 地图 61 2.9.6 Dyna Image 63 2.9.7 Media 65 2.9.8 Star Rating 65 2.9.9 Wizard: 66 2.10 消息: 66 2.10.1 Growl Mac风格的消息显示 66 2.10.2 Message/Messages 67 2.10.3 Tooltip 67 2.11 文件处理: 67 2.11.1 FileUpload 上传文件 67 2.11.2 FileDownload 下载文件 69 2.11.3 IdleMonitor 屏幕凝滞 70 2.11.4 Terminal 70 2.12 辅助功能(辅助其它JSF组件,给它们添加新的功能和行为): 71 2.12.1 Ajax Engine 71 2.12.2 Ajax Poll轮询 72 2.12.3 Ajax远程调用p:remoteCommand 72 2.12.4 Ajax Status 显示ajax后台运行状态。 72 2.12.5 Focus 73 2.12.6 Effect: 73 2.12.7 Collector : 74 2.12.8 Resizable 给任何JSF组件添加可调整大小的行为。 74 2.12.9 RequestContext : 75 3 TouchFaces 76 3.1.1 移动UI工具 76 3.1.2 Ajax Push/Comet 77 3.1.3 几分钟实现聊天应用: 78 4 附录 79 4.1 全部UI组件列表 84 4.2 PrimeFaces常用属性集 85
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值