इस तरह मैंने JSON डेटा के साथ स्प्रिंग MVC मल्टीपार्ट अनुरोध लागू किया।
JSON डेटा के साथ मल्टीपार्ट अनुरोध (जिसे मिश्रित मल्टीपार्ट भी कहा जाता है):
स्प्रिंग 4.0.2 रिलीज़ में रेस्टफुल सेवा के आधार पर, XML या JSON के डेटा के रूप में पहले भाग के साथ HTTP अनुरोध और एक फ़ाइल के रूप में दूसरा भाग @RequestPart के साथ प्राप्त किया जा सकता है। नीचे नमूना कार्यान्वयन है।
जावा स्निपेट:
कंट्रोलर की बाकी सेवा में ऐसे मल्टीपार्ट + JSON अनुरोध की सेवा के लिए @RequestPart और MultipartFile मिश्रित होंगे।
@RequestMapping(value = "/executesampleservice", method = RequestMethod.POST,
consumes = {"multipart/form-data"})
@ResponseBody
public boolean executeSampleService(
@RequestPart("properties") @Valid ConnectionProperties properties,
@RequestPart("file") @Valid @NotNull @NotBlank MultipartFile file) {
return projectService.executeSampleService(properties, file);
}
फ्रंट एंड (जावास्क्रिप्ट) स्निपेट:
एक FormData ऑब्जेक्ट बनाएँ।
नीचे दिए गए चरणों में से एक का उपयोग करके फ़ाइल को फॉर्मडेटा ऑब्जेक्ट में जोड़ें।
- यदि फ़ाइल को "फ़ाइल" प्रकार के इनपुट तत्व का उपयोग करके अपलोड किया गया है, तो इसे फॉर्मडेटा ऑब्जेक्ट पर जोड़ें।
formData.append("file", document.forms[formName].file.files[0]);
- सीधे फ़ाइल को फॉर्मडेटा ऑब्जेक्ट में जोड़ें।
formData.append("file", myFile, "myfile.txt");
याformData.append("file", myBob, "myfile.txt");
कड़े JSON डेटा के साथ एक बूँद बनाएँ और इसे FormData ऑब्जेक्ट में जोड़ें। यह मल्टीपार्ट अनुरोध में दूसरे भाग के कंटेंट-प्रकार को फ़ाइल प्रकार के बजाय "एप्लिकेशन / जोंस" होने का कारण बनता है।
सर्वर को अनुरोध भेजें।
का अनुरोध करें विवरण:
Content-Type: undefined
। यह ब्राउज़र को कंटेंट-टाइप को मल्टीपार्ट / फॉर्म-डेटा सेट करने और सीमा को सही ढंग से भरने का कारण बनता है। मल्टीपार्ट / फॉर्म-डेटा के लिए सामग्री-प्रकार को मैन्युअल रूप से सेट करना अनुरोध के सीमा पैरामीटर को भरने में विफल होगा।
जावास्क्रिप्ट कोड:
formData = new FormData();
formData.append("file", document.forms[formName].file.files[0]);
formData.append('properties', new Blob([JSON.stringify({
"name": "root",
"password": "root"
})], {
type: "application/json"
}));
अनुरोध विवरण:
method: "POST",
headers: {
"Content-Type": undefined
},
data: formData
अनुरोध पेलोड:
Accept:application/json, text/plain, */*
Content-Type:multipart/form-data; boundary=
Content-Disposition: form-data; name="file"; filename="myfile.txt"
Content-Type: application/txt
Content-Disposition: form-data; name="properties"; filename="blob"
Content-Type: application/json
org.springframework.web.multipart.commons.CommonsMultipartResolver
अपने सर्वलेट संदर्भ में निर्दिष्ट किया है ?