जर्सी का उपयोग करके सरल फ़ाइल अपलोड को लागू करने में असमर्थ। लापता निर्भरता त्रुटियों आवेदन बूटस्ट्रैप पर उठाया:जर्सी में सरल फ़ाइल अपलोड को कार्यान्वित नहीं कर सकता - "संसाधन के POST के साथ एनोटेटेड, कक्षा को वैध संसाधन विधि के रूप में पहचाना नहीं गया है। अनुपलब्ध"
The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.foo.MyResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 0
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.foo.MyResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 1
SEVERE: Method, public javax.ws.rs.core.Response com.foo.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition), annotated with POST of resource, class com.foo.FS2Resource, is not recognized as valid resource method.
unavailable
com.sun.jersey.spi.inject.Errors$ErrorMessagesException
at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
ऐसा लगता है एक बाकी सेवा करने के लिए इनपुट पैरामीटर मानचित्रण के साथ कोई समस्या नहीं है की तरह? मैंने प्रलेखन पढ़ा है और कई उदाहरणों का पालन किया है, और मैं उन उदाहरणों से विचलित नहीं हूं।
कोड यह रहा:
@Path("v1/")
public class FileUploadResource {
@POST
@Path("upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({MediaType.APPLICATION_JSON})
public Response uploadFile(
@FormDataParam("file") InputStream is,
@FormDataParam("file") FormDataContentDisposition detail) {
String name = detail.getFileName();
// do upload stuff
String output = ....
return Response.status(200).entity(output).build();
}
}
मैं में खींच लिया "संकलन 'com.sun.jersey.contribs: जर्सी-बहुखण्डीय: 1.17.1'" FormDataParams के लिए।
संपादित:
@POST
@Path("upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public Response uploadFile(final MimeMultipart file) {
if (file == null) {
return Response.status(Response.Status.BAD_REQUEST).entity("Must supply a valid file").build();
try {
for (int i = 0; i < file.getCount(); i++) {
// ... do something with file.getBodyPart(i));
}
return Response.ok("done").build();
} catch (final Exception e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e).build();
}
}
यह शायद एक पर्याप्त समाधान नहीं है, लेकिन अभी भी की तह तक पहुंचने के लिए करना चाहते हैं: मैं जर्सी में है, लेकिन केवल इस अधिक आदिम फैशन में काम कर इसे प्राप्त करने में सक्षम था मुद्दा।
मैं वास्तव में एक ऐसी ही समस्या में चल रहा हूँ। मेरे पास सभी जर्सी जार के समान संस्करण हैं, और भविष्य में मैपिंग समस्या से बचने के लिए मेरे प्रत्येक फॉर्मडेटा पैराम मूल्य अलग हैं। हालांकि, मेरे पास अभी भी बूटस्ट्रैप समस्या है। क्या पोस्ट का उपयोग करने और एनोटेशन का उत्पादन करने में कोई समस्या है या कुछ? एकमात्र तरीका है जिसके साथ मुझे यह समस्या है, मेरी पोस्ट एक है। –
यह मेरे साथ एक सहयोगी द्वारा उल्लेख किया गया था कि यह एक ज्ञात बग है और यह कि कुछ लोगों के लिए यह कारण है कि यह उस विशिष्ट वितरण/कॉन्फ़िगरेशन के साथ करना है जिसके साथ आप काम कर रहे हैं। –
क्या पर एक बग, बिल्कुल? फॉर्मडेटा पैरामोट एनोटेशन या जर्सी? –