असल में यह मामूली कार्य नहीं है। यदि आप क्लाइंट से डेटाबेस तक स्ट्रीम लिखना चाहते हैं, तो आपको मैन्युअल रूप से अनुरोध संसाधित करना होगा। कुछ पुस्तकालय हैं, जो इस कार्य को सरल बना सकते हैं। उनमें से एक "Apache Commons FileUpload" है। बहुत सरल उदाहरण के नीचे, आप इस लाइब्रेरी द्वारा आने वाले multipart/form-data
अनुरोध को कैसे संसाधित कर सकते हैं। के लिए फ़ाइल क्षेत्र इच्छा
@Controller
public class Controller{
@RequestMapping("/upload")
public String upload(HttpServletRequest request){
String boundary = extractBoundary(request);
try {
MultipartStream multipartStream = new MultipartStream(request.getInputStream(),
boundary.getBytes(), 1024, null);
boolean nextPart = multipartStream.skipPreamble();
while(nextPart) {
String header = multipartStream.readHeaders();
if(header.contains("filename")){
//if input is file
OutputStream output = createDbOutputStream();
multipartStream.readBodyData(output);
output.flush();
output.close();
} else {
//if input is not file (text, checkbox etc)
ByteArrayOutputStream output = new ByteArrayOutputStream();
multipartStream.readBodyData(output);
String value = output.toString("utf-8");
//... do something with extracted value
}
nextPart = multipartStream.readBoundary();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private String extractBoundary(HttpServletRequest request) {
String boundaryHeader = "boundary=";
int i = request.getContentType().indexOf(boundaryHeader)+
boundaryHeader.length();
return request.getContentType().substring(i);
}
}
हैडर लगता है:
Content-Disposition: form-data; name="fieldName"; filename="fileName.jpg"
Content-Type: image/jpeg
सरल क्षेत्र इच्छा के लिए हैडर की तरह दिखता है:
Content-Disposition: form-data; name="fieldName";
ध्यान दें, कि इस स्निपेट उदाहरण सरलीकृत है आप दिशा दिखाने के लिए । इसमें कुछ विवरण नहीं हैं: हेडर से फील्ड नाम निकालें, डेटाबेस आउटपुट स्ट्रीम आदि बनाएं। आप इन सभी चीजों को अपने आप से कार्यान्वित कर सकते हैं। मल्टीपार्ट अनुरोध के फ़ील्ड हेडर के उदाहरण आप RFC1867 में पा सकते हैं। multipart/form-data
RFC2388 के बारे में जानकारी।
स्रोत
2016-06-17 05:33:40
क्या डेटाबेस का उपयोग कर रहे? – Songo
हम एडब्ल्यूएस एस 3 – McLovin