0

私はいくつかのプロジェクトに取り組んでおり、画像のアップロードを実装して画像機能を表示する必要がありますが、ここで問題に直面しています。

画像を表示できません、助けてください。

Primefaces の p:fileload を使用しています。すべての画像を jboss サーバーの bin フォルダー (E:\jboss-as-7.1.1.Final\bin\BrandImages\logo.gif) に保存しています。そのパスを MYSQL DB に保存すると、今のところ問題なく動作しています。しかし、getBrandDetails() を呼び出して画像を表示しようとすると、表示できません。この問題を解決する方法を教えてください???

web.xml 内

web.xml にフィルターと MIME を追加しました...

Xhtml

<h:form enctype="multipart/form-data">
   <h:panelGrid id="brandDetails_Panel" columns="2" columnClasses="plabel, pvalue" styleClass="ui-panelgrid">
        <h:outputLabel for="brand_img_url" value="Brand Image" />
    <p:fileUpload id="brand_img_url" fileUploadListener="#{brandBean.handleFileUpload}"  
        mode="advanced"  sizeLimit="100000" allowTypes="/(\.\/)(gif|jpe?g|png)$/"/>

        <h:outputLabel value="" />
    <p:graphicImage value="#{brandBean.brand_image}" alt="The image could not be found."/>
    </h:panelGrid>
<f:facet name="footer" >
    <center>
        <p:commandButton id="add" value="Add"  disabled="#{brandBean.disable_addBut}" actionListener="#{brandBean.addBrandDetails}"/>
        <p:commandButton id="view" value="View" disabled="#{brandBean.disable_viewBut}"  action="#{brandBean.getBrandDetails}"/>         
    </center>       
</f:facet>
</h:form>

addBrandDetails() では、FileUpload() を次のように処理します。

public void handleFileUpload(FileUploadEvent event) 
{
String t1=".\\BrandImages\\"+event.getFile().getFileName();
System.out.println("The final path is :"+t1);

try{
    File f =new File(t1);

    FileOutputStream fileOutputStream = new FileOutputStream(f);

    byte[] buffer = new byte[1024];

        int bulk;
        InputStream inputStream = event.getFile().getInputstream();
        while (true) {
          bulk = inputStream.read(buffer);
          if (bulk < 0) {
                 break;
                 }
          fileOutputStream.write(buffer, 0, bulk);
          fileOutputStream.flush();
          }
          fileOutputStream.close();
          inputStream.close();
}catch(Exception e)
{
    System.out.println("Exception :"+e);
}   

this.brand_image=t1;
}               

getBrandDetails()では、「this.setBrand_image(b.getBrand_img_url());」と設定しています。

私が印刷しているとき、それはパス E:\jboss-as-7.1.1.Final\bin\BrandImages\logo.gif を印刷しています

しかし、画像を表示することはできません。

私を助けてください....

4

1 に答える 1

0

まず、Beanはセッションとしてスコープを持っている必要があります。良い方法は、要求された画像を取得するためのBeanを作成することです。

次に、変数「brand_image」はDefaultStreamedContentのオブジェクトである必要があります。Primefacesを使用しているためです。

brand_image = new DefaultStreamedContent(input, "image/jpeg");
于 2013-03-01T17:04:40.163 に答える