Как загрузить изображение в базу данных, используя Richfaces и JPA - PullRequest
0 голосов
/ 18 января 2012

Я занимаюсь разработкой веб-приложения на JBOSS AS 7 с использованием Richaces 4, SEAM и JPA. Не могу разбогатеть: fileUpload работает. Я понятия не имею, как это сделать. При загрузке изображения через rich: fileUpload, мне нужно, чтобы оно было вставлено в базу данных. Что я сделал прямо сейчас:

  1. У меня есть страница .xhtml, где есть форма для загрузки файлов (используется из демонстрации Richfaces);
  2. Создан бин сущности UploadedImage.java (с аннотацией @Lob для столбца изображения);
  3. Класс DAO для сохранения загруженного изображения с помощью entitymanager;
  4. И UploadBean.java для просмотра, чтобы связать его с проектом EJB;

Ответы [ 3 ]

1 голос
/ 20 февраля 2012

Если у кого-то возникнет такая же проблема, вот как заставить ее работать:

Upload.xhtml (содержит форму для загрузки изображения):

<rich:fileUpload fileUploadListener="#{fileUploadBean.listener}"
                        stopButtonClass="file-upload-stop-button"
                        addButtonClass="file-upload-button" listHeight="0" listWidth="0"
                        id="upload" acceptedTypes="jpg, gif, png, bmp" allowFlush="true" maxFileQuantity="10">
                        <a4j:ajax event="uploadcomplete" execute="@none"
                            render="info, imgs" />
                    </rich:fileUpload>

FileUploadBean.java (доставкаданные в класс ejb):

@Named()
@RequestScoped
public class FileUploadBean implements Serializable {

    private static final long serialVersionUID = 1L;


    @Inject
    private CMSDao cms;

    private Integer pid;
    private String name;
    private String aname;
    private byte[] data;


    public FileUploadBean() {}
    private ArrayList<UploadedImage> files = new ArrayList<UploadedImage>();
    private List<UploadedImage> filess;

    public void listener(FileUploadEvent event) throws Exception {
            UploadedFile item = event.getUploadedFile();
            UploadedImage file = new UploadedImage();
            file.setName(item.getName());
            file.setData(item.getData());
            files.add(file);
            cms.insertImg(file);

        }
    //getters and setters

класс EJB:

  public void insertImg(UploadedImage img)  {
            em.persist(img);
            em.flush();
        }

UploadedImage.java (объектный компонент):

@Entity
@Table(name="photo")
public class UploadedImage implements Serializable {
    private static final long serialVersionUID = -8192553629588066292L;
    @Id
    @GeneratedValue
    @Column(name="pid")
    private Integer pid;
    @Column(name="name")
    private String name;
    @Column(name="aid")
    private String aname;
    @Lob
    @Column(name="data")
    @Basic(fetch = FetchType.LAZY)
    private byte[] data;
// getters and setters
1 голос
/ 05 сентября 2016

Вам необходимо добавить следующий код в ваш файл web.xml

<context-param>
    <param-name>org.richfaces.fileUpload.maxRequestSize</param-name>
    <param-value>250000</param-value>
</context-param>    


<context-param>
    <param-name>org.richfaces.fileUpload.createTempFiles</param-name>
    <param-value>true</param-value>
</context-param>    

250000 означает 250 КБ к файлу максимального размера запроса для загрузки

0 голосов
/ 18 января 2012

Я не знаю, как заставить это работать, но когда я использовал компонент, я нашел его большим и громоздким.Я использую RichFaces, но для этого я использую компонент Tomahawk, который намного проще.

Имейте в виду, что вам нужна поддержка multiPartForm для загрузки файлов ...

MAG, Мило ван дер Зее

...