जावा ईई - डेटाबेस में छवि अपलोड करें? - जावा, डेटाबेस, अपलोड, ब्लॉब

मैं अपनी मां के लिए काफी बुनियादी साइट बना रहा हूं, और देख रहा हूं क्योंकि मैंने जावा ईई में कुछ सामान और पिछले सत्र में कॉलेज के दौरान ईजेबी के साथ, मैं इस पर टिकने जा रहा हूं।

मेरे पास एकमात्र मुद्दा है जो छवियों को अपलोड कर रहा है - मुझे कोई उदाहरण नहीं दिख रहा है।

मैं इकाई वर्गों और पैरामीटर किए गए प्रश्नों का उपयोग कर रहा हूं। यह डेटाबेस को लिखने का कोड है, जो ठीक काम कर रहा है, मैं बस इस समय के लिए ब्लॉब छवि मान को शून्य में सेट कर रहा हूं।

@Override
public void addClothes(String designer, String cname, String ctype, String desc) {
Clothes c = new Clothes();
em.persist(c);
c.setDesigner(designer);
c.setCname(cname);
c.setCtype(ctype);
c.setDescript(desc);
c.setImage(null);
}

मेरे पास एक सर्वलेट है जो एक फ़ाइल लेता है, मैं बस यह सुनिश्चित नहीं करता कि फाइल कब, कब गुजरती है, को सॉर्ट किया जाना चाहिए और मुझे डेटाबेस में क्या लिखना चाहिए (जो मैं देख रहा हूं, यह बाइट [])

सही दिशा में एक हाथ की सराहना की जाएगी!

उत्तर:

उत्तर № 1 के लिए 1

एक बार आपके पास सर्वर पर फ़ाइल हो, या तो स्मृति में या स्थानीय या अस्थायी फ़ाइल में (जो आपके द्वारा उपयोग किए जा रहे ढांचे या पुस्तकालयों पर निर्भर करता है), तो आपके पास एक रैपर प्रकार का संदर्भ होगा।

यदि आप उपयोग कर रहे हैं अपाचे कॉमन्स फ़ाइल अपलोड करें, तुम्हारे पास एक FileItem संदर्भ। फ़ाइल के सभी सामग्रियों को बाइट सरणी के रूप में अनुरोध करने के लिए:

byte[] contents = fileItem.get();

यदि आप उपयोग कर रहे हैं त्रिनिदाद के तोमाहॉक, तुम्हारे पास एक org.apache.myfaces.trinidad.model.UploadedFile संदर्भ। फ़ाइल के सभी सामग्रियों को बाइट सरणी के रूप में अनुरोध करने के लिए, आप कक्षा का उपयोग कर सकते हैं IOUtils का अपाचे कॉमन्स आईओ:

byte[] contents = IOUtils.toByteArray(uploadedFile.getInputStream());

यदि आपके पास संदर्भ है org.apache.myfaces.custom.fileupload.UploadedFile, अधिक सरल है:

byte[] contents = uploadedFile.getBytes();

अद्यतन करें

यदि आप जावा ईई 6 का उपयोग कर रहे हैं, तो आप अतिरिक्त पुस्तकालयों के बिना अपलोड फ़ाइलों के लिए सर्वर 3.0 विनिर्देश की नई विशेषताओं का उपयोग कर सकते हैं। BalusC में उत्कृष्ट ट्यूटोरियल देखें बलुस कोड: सर्वलेट 3.0 में फाइल अपलोड करना


जवाब के लिए 0 № 2

हाइबरनेट के साथ काम करने के लिएhttp://www.mkyong.com/hibernate/hibernate-save-image-into-database/

जेडीबीसी के साथ काम करने के लिए:

जेडीबीसी का उपयोग कर डेटाबेस बीएलओबी में छवि लिखने के लिए,आपको फ़ाइल को इनपुटस्ट्रीम में कनवर्ट करने की आवश्यकता है। statement.setBinaryStream (2, (इनपुटस्ट्रीम) इनपुटस्ट्रीम, (int) (image.length ())); तैयार किए गए स्टेटमेंट स्टेटमेंट ऑफ़र विधि सेट बाइनरीस्ट्रीम () जिसका उपयोग डेटाबेस बीएलओबी कॉलम में बाइनरी स्ट्रीम लिखने के लिए किया जाता है।

आपकी सहायता करने के लिए यहां एक कोड स्निपेट है:

File image = new File("C:/test.jpg");
inputStream = new FileInputStream(image);

Prepared statement = //define as per your table
// set the file binary stream
statement.setBinaryStream(2, (InputStream) inputStream,(int) (image.length()));

statement.executeUpdate();

जवाब के लिए 0 № 3

अपने कपड़े वर्ग में, आप जोड़ सकते हैं:

@Lob
private byte[] image;

// Getter/Setter methods

जवाब के लिए 0 № 4

यह काम कर रहा है! कुछ हद तक, इस कोड के साथ:

public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
out = response.getWriter();
final String path = "clothesImages" + File.separator + request.getParameter("designer") + File.separator + request.getParameter("ctype") + File.separator + request.getParameter("cname");
out.println(path);
String currentDir = new File(".").getAbsolutePath();
out.println(currentDir);
final Part filePart = request.getPart("image");
final String filename = "image.jpg";
File file = new File(path);
if (!file.exists()){
out.println("Dir Doesn"t Exist");
file.mkdirs();
}
OutputStream outstream = null;
InputStream filestream = null;

try{
outstream = new FileOutputStream(new File(path + File.separator + filename));
filestream = filePart.getInputStream();
int read = 0;
final byte[] bytes = new byte[1024];
while(( read = filestream.read(bytes)) != -1){
outstream.write(bytes, 0, read);
}
out.println("New file " + filename + " created at " + path);
}catch (FileNotFoundException fne) {
out.println("You either did not specify a file to upload or are "
+ "trying to upload a file to a protected or nonexistent "
+ "location.");
out.println("<br/> ERROR: " + fne.getMessage());
}finally {
if (out != null) {
out.close();
}
if (filestream != null) {
filestream.close();
}
if (outstream != null) {
outstream.close();
}
}

}

मेरे पास एकमात्र मुद्दा फ़ाइल पथ सेट कर रहा है। रास्ता है

सी: UsersChrisAppDataRoamingNetBeans7.2.1configGF3domain1

लेकिन मैं इसे सहेजना चाहता हूं

परियोजना युद्ध / वेब / images

कोई विचार?


संबंधित सवाल
सबसे लोकप्रिय