java अनुरोध अस्वीकार कर दिया गया क्योंकि स्प्रिंगबूट में कोई मल्टीपार्ट सीमा नहीं मिली थी




web-services file-upload (5)

समस्या यह है कि आप अपने द्वारा सामग्री-प्रकार सेट कर रहे हैं, इसे खाली रखना चाहिए Google Chrome आपके लिए ऐसा करेगा बहुस्तरीय सामग्री-प्रकार को फ़ाइल सीमा जानने की आवश्यकता है, और जब आप सामग्री प्रकार को निकालते हैं, तो पोस्टमैन स्वचालित रूप से आपके लिए ऐसा करेंगे।

जैसा कि मैं स्प्रिंग बूट और webservices के साथ पोस्टमेन क्रोम ऐड-ऑन के साथ कोशिश कर रहा हूं

पोस्टमैन content-type="multipart/form-data" और मुझे नीचे अपवाद मिल रहा है

HTTP Status 500 - Request processing failed; 
nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; 
nested exception is java.io.IOException: 
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

नियंत्रक में मैंने नीचे कोड निर्दिष्ट किया

@ResponseBody
@RequestMapping(value = "/file", headers = "Content-Type= multipart/form-data", method = RequestMethod.POST)

public String upload(@RequestParam("name") String name,
        @RequestParam(value = "file", required = true) MultipartFile file)
//@RequestParam ()CommonsMultipartFile[] fileUpload
{
    // @RequestMapping(value="/newDocument", , method = RequestMethod.POST)
    if (!file.isEmpty()) {
        try {
            byte[] fileContent = file.getBytes();
            fileSystemHandler.create(123, fileContent, name);
            return "You successfully uploaded " + name + "!";
        } catch (Exception e) {
            return "You failed to upload " + name + " => " + e.getMessage();
        }
    } else {
        return "You failed to upload " + name + " because the file was empty.";
    }
}

यहां मैं फ़ाइल हैंडलर कोड निर्दिष्ट करता हूं

public String create(int jonId, byte[] fileContent, String name) {
    String status = "Created file...";
    try {
        String path = env.getProperty("file.uploadPath") + name;
        File newFile = new File(path);
        newFile.createNewFile();
        BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(newFile));
        stream.write(fileContent);
        stream.close();
    } catch (IOException ex) {
        status = "Failed to create file...";
        Logger.getLogger(FileSystemHandler.class.getName()).log(Level.SEVERE, null, ex);
    }
    return status;
}

"पोस्टमैन-रेस्ट क्लाइंट" सामग्री-प्रकार की सेटिंग के साथ पोस्ट की गई कार्रवाई के लिए उपयुक्त नहीं है। आप "उन्नत रेस्ट क्लाइंट" या अन्य का उपयोग करने का प्रयास कर सकते हैं।

साथ ही, स्प्रिंग 3.1 एम 2 के बाद से हेडर की जगह खपत की गई और उत्पादन किया गया, https://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements देखें । और आप सीधे produces = MediaType.MULTIPART_FORM_DATA_VALUE उपयोग कर सकते हैं।


पोस्टमैन और पोस्टमैन में सामग्री प्रकार को अनचेक करें स्वचालित रूप से चलाने के समय आपके इनपुट के आधार पर सामग्री प्रकार का पता लगाता है।

नमूना


यह मेरे लिए काम किया है: पोस्टमैन के माध्यम से एक फ़ाइल अपलोड करने, एक वसंत MVC बैकएंड वेबएप पर:

बैकएंड:

डाकिया:


समस्या आपके कोड में नहीं है। आपके अनुरोध में समस्याएं। आप बहु-भाग अनुरोध में किसी प्रकार की सीमा नहीं मिल रहे हैं





multifile-uploader