.doc
, .pdf
, .txt
ve görüntü dosyaları hibernate, jsf ve mysql kullanarak veritabanımın içine kaydetmeye çalışıyorum.java kullanarak doc, pdf ve resim dosyalarını mysql veritabanına nasıl kaydederim?
BLOB türünde bir dosyayı kaydetmek için bir sütun oluşturdum. .txt
türünü kaydediyorsam, dosyalar doğru şekilde kaydedilir.
Başka bir biçimde bir dosya kaydetmeye çalışıyorsam, bir istisna alıyorum. Fasulyeimde bir alan adı oluşturdum: byte[] file;
İstisnalar olmadan nasıl düzgün kaydedebilirim? Mysql sütun için veri türünü değiştirmem veya java sınıfı için farklı bir alan mı kullanmalıyım? (BalusC cevaben)
Bu benim dosya yazma kullanıyorum kodudur. fileInputStream
kullanıyorum ve ardından hazırda bekleme çerçevesini kullanarak dosyayı kaydediyorum.
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
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;
}
}
ve benim veritabanı tablo yapısı aşağıdaki etti: bir yerde dosyayı kaydetmek ve konumu kaydetmek için
Create UploadFile(FILE_NAME` VARCHAR(1000) NOT NULL,
`FILE` BLOB NOT NULL);
Hangi özel durumları alıyorsunuz? – soulcheck