2013-03-22 4 views
1

объект:вставки изображения в базе данных с BLOB типом данных

@Lob 
@Column(name = "logo") 
private byte[] logo; 

форма:

<h:form enctype="multipart/form-data"> 
    <p:messages showDetail="true"/> 

    <p:fileUpload value="#{testController.file}" 
        update="messages" 
        mode="simple" 
        sizeLimit="1048576" 
        allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/> 

    <p:growl id="messages" showDetail="true"/> 

    <p:commandButton value="Submit" ajax="false" 
        actionListener="#{testController.upload}"/> 
</h:form> 

боб:

private testEntity current; 
private UploadedFile file; 

public UploadedFile getFile() { 
    return file; 
} 

public void upload() { 
    if (file != null) { 
     try { 
      byte[] data = file.getContents(); 
      current.setLogo(data); 

      getFacade().edit(current); 
      JsfUtil.addSuccessMessage("Successful! " + file.getFileName() + " is uploaded."); 
     } catch (Exception e) { 
     } 
    } 
} 

, когда я пытаюсь загрузить файлы, такие как 80Kb изображения, он предоставит мне это исключение

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'logo' at row 1 

, но если я загружу только < 10kb изображений, код работает.

с использованием JSF 2.0, Primefaces 3.5, большинство кодов генерируется автоматически с использованием CRUD.

+0

Как вы объявляете свой столбец базы данных? – skuntsel

+0

Это проблема JPA, а не JSF. –

+0

Я объявил его BLOB – galao

ответ

1

Проблема в том, что в столбце базы данных хранится меньше, чем вы пытаетесь сохранить. Это то, что означает усечение.

Вам нужно будет изменить определение столбца базы данных на LONGBLOB.

+0

, но я просто загрузил изображение размером 84kb – galao

+0

Вы можете захотеть [требования к хранению MySQL] (http://dev.mysql.com/doc/refman/5.5/ru/storage-requirements.html # id899830). – Ares

Смежные вопросы