के लिए वसंत के साथ संपीड़ित जेपीजी बाइट सरणी के साथ एक मल्टीपार्ट पोस्ट अनुरोध बनाना मैं अपने एंड्रॉइड ऐप में सफलतापूर्वक एंड्रॉइड के लिए वसंत का उपयोग कर रहा हूं ताकि सर्वर से डेटा प्राप्त/पोस्ट हो सके। अब, मुझे मल्टीपार्ट फॉर्म के लिए एक पोस्ट अनुरोध करना है, लेकिन मैं जिस तरह से चाहता हूं उसे काम करने में असमर्थ हूं।एंड्रॉइड
उपयोग मामला: 1. गैलरी से एक तस्वीर लेने 2. एक बिटमैप फ़ाइल स्रोत 3. कम्प्रेस एक ByteArrayOutputStream 4. दर्रा बाइट सरणी (ByteArrayOutputStream.toByteArray लिए बिटमैप का उपयोग करने के लोड यह()) सर्वर के लिए।
फोटो अपलोड के लिए सर्वर endpoint केवल निम्नलिखित माइम प्रकार (नोट के साथ एक MultipartFile स्वीकार करता है (मैं jpeg नहीं आवेदन/ओकटेट धारा के रूप में इस भेजने की जरूरत है), यह माइम प्रकार स्वीकार नहीं करता है: आवेदन/ओकटेट धारा):
GIF("image/gif")
PNG("image/png", "image/x-png")
JPG("image/jpeg", "image/jpg", "image/pjpeg")
BMP("image/bmp")
मैं sample code उपयोग करने की कोशिश की है, लेकिन अब तक असफल रहा।
निम्नलिखित कोड मैं निम्नलिखित त्रुटि मिलती है: org.springframework.web.bind.MissingServletRequest ParameterException: आवश्यक MultipartFile पैरामीटर 'फ़ाइल' इस मामले पर वर्तमान
सहायता बहुत सराहना कर रहा है नहीं है। धन्यवाद और अच्छा काम करते रहो।
यहाँ मेरी कोड है:
bitmap = BitmapFactory.decodeFile("/mnt/sdcard/DCIM/Camera/20130205_162546.jpg");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 60, bos);
byte[] data = bos.toByteArray();
// populate the data to post
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("caption", "Test Caption");
formData.add("file", data);
// The URL for making the POST request
final String url = "http://api.example.com/imageUpload?oauth_token=XXXXXX";
HttpHeaders requestHeaders = new HttpHeaders();
// Sending multipart/form-data
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
// Populate the MultiValueMap being serialized and headers in an HttpEntity object to use for the request
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(formData, requestHeaders);
// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate(true);
// // Set a custom message converter that supports the application/json media type
// final GsonHttpMessageConverter gsonMessageConverter = new GsonHttpMessageConverter();
// gsonMessageConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
// final ByteArrayHttpMessageConverter byteArrayMessageConverter = new ByteArrayHttpMessageConverter();
// byteArrayMessageConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.IMAGE_JPEG));
// final FormHttpMessageConverter formMessageConverter = new FormHttpMessageConverter();
// formMessageConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.IMAGE_JPEG));
// restTemplate.getMessageConverters().addAll(Arrays.asList(gsonMessageConverter, byteArrayMessageConverter, formMessageConverter));
// Make the network request, posting the message, expecting a String in response from the server
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
// Return the response body to display to the user
Log.i(TAG, "**** response.body : " + response.getBody());