So speichern Sie die doc -, pdf-und Bild-Dateien in die mysql-Datenbank mit java?

Ich versuche zu speichern .doc, .pdf, .txt - und image-Dateien in meine Datenbank mit Hilfe von hibernate, jsf und mysql.

Habe ich eine Spalte zum speichern der Datei von Typ BLOB. Wenn ich speichern .txt geben, dann werden die Dateien richtig gespeichert.

Wenn ich versuche zu speichern, die Datei von einem anderen format, dann bin ich immer eine Ausnahme.
In meinem bean habe ich einen Feld-name: byte[] file;

Wie kann ich speichern Sie Sie korrekt und ohne Ausnahmen? Muss ich ändern, mysql-Datentyp für die Spalte, oder verwenden Sie ein anderes Feld für die java-Klasse?


(in Reaktion auf BalusC)

Dies ist der code, die ich benutze für das schreiben in eine Datei. Ich bin mit fileInputStream und dann speichern Sie die Datei mit hibernate framework.

Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();

if (item.isFormField()) {
   String name = item.getFieldName();
   String value = item.getString();
} else {
   String fieldName = item.getFieldName();
   String fileName = item.getName();
   String contentType = item.getContentType();
   boolean isInMemory = item.isInMemory();
   long sizeInBytes = item.getSize();
   byte[] fileInBytes=item.get();


   try {
      File uploadedFile = new File("/home/db/webApp", fileName);
      uploadedFile.createNewFile();
      FileInputStream fileInputStream = new FileInputStream(uploadedFile);
      //convert file into array of bytes
      fileInputStream.read(fileInBytes);
      fileInputStream.close();
  } catch (Exception e) {
      e.printStackTrace();
  }

   UploadedFile object= new UploadedFile(); 
   object.setFile(fileInBytes);
   uploadedObject.setFileName(fileName);
   session.save(object);

UploadedFile ist jsf-managed-bean:

public class UploadedFile{
   private String fileName;
   private byte[] file;
   /**
    * @return the fileName
    */
   public String getFileName() {
      return fileName;
   }
   /**
    * @param fileName the fileName to set
    */
   public void setFileName(String fileName) {   
      this.fileName = fileName;
   }
   /**
    * @return the file
    */
  public byte[] getFile() {
     return file;
  }
  /**
   * @param file the file to set
   */
  public void setFile(byte[] file) {
      this.file = file;
   }
}

und meine Datenbank-Tabelle hat folgende Struktur:

Create UploadFile(FILE_NAME` VARCHAR(1000) NOT NULL,
 `FILE` BLOB NOT NULL);
welche Ausnahme machen Sie?

InformationsquelleAutor prt | 2011-01-10

Schreibe einen Kommentar