2012-05-29 17 views
12

क्या किसी को पता है कि निम्न दो इंटरफ़ेस हस्ताक्षरों का उपयोग करके फ़ाइल अपलोड करने के लिए RestEasy क्लाइंट साइड कॉल कैसे बनाएं? मुझे कोई जानकारी नहीं मिल रही है। मुझे पता है कि HttpClient का उपयोग करके इसे कैसे किया जाए, लेकिन मैं इसे लगातार रखने के लिए क्लाइंट प्रॉक्सी का उपयोग करना चाहता हूं।RestEasy क्लाइंट फ्रेमवर्क फ़ाइल अपलोड

@POST 
@Path("/upload") 
@Consumes("multipart/form-data") 
public void uploadFile(MultipartFormDataInput input); 

@POST 
@Path("/upload2") 
@Consumes("multipart/form-data") 
public void uploadFile2(@MultipartForm FileUploadForm form); 

किसी भी मदद की सराहना की जाएगी, फ्रेड्रिक

उत्तर

2

मैं समय इस का उत्तर के लिए चारों ओर देख के एक झुंड खर्च किए, लेकिन मैं अंत में पता लगा है कि यह काम करने के लिए कैसे।

resteasy-multipart-provider-2.3.5.Final.jar 

अपने classpath (या जो भी resteasy प्रयोग कर रहे हैं के संस्करण) के लिए: आप जोड़ने की जरूरत है। इसके बाद आप इस फार्म के बारे में कुछ कर सकते हैं:

ClientRequest add_request = request(); 

MultipartFormDataOutput upload = new MultipartFormDataOutput(); 
upload.addFormData("data", recording, MediaType.APPLICATION_XML_TYPE); 
upload.addFormData("file", Resources.toByteArray(Resources.getResource("thermo.wav")), MediaType.APPLICATION_OCTET_STREAM_TYPE); 

add_request.body(MediaType.MULTIPART_FORM_DATA_TYPE, upload); 

ClientResponse<?> recording_response = add_request.post(); 
Assert.assertEquals(Response.Status.CREATED, recording_response.getResponseStatus()); 

अंतिम पंक्ति सिर्फ एक JUnit परीक्षण दावा है; इसकी आवश्यकता नहीं है। thermo.wav@FormParam("file") द्वारा निर्दिष्ट किया गया है और Google Guava's संसाधन वर्ग का उपयोग कर एक बाइट सरणी में लोड किया गया है। आप बाइट सरणी बना सकते हैं हालांकि आप चाहते हैं।

+0

जहां चर '' वैसे recording'' परिभाषित किया गया है? –

7

RESTEasy 3.0.x के साथ MultipartFormData के माध्यम से एक फाइल अपलोड ऐसा दिखाई दे सकता:

ResteasyClient client = new ResteasyClientBuilder().build(); 

ResteasyWebTarget target = client.target("http://.../upload"); 

MultipartFormDataOutput mdo = new MultipartFormDataOutput(); 
mdo.addFormData("file", new FileInputStream(new File("....thermo.wav")), 
    MediaType.APPLICATION_OCTET_STREAM_TYPE); 
GenericEntity<MultipartFormDataOutput> entity = new GenericEntity<MultipartFormDataOutput>(mdo) {}; 

Response r = target.request().post(Entity.entity(entity, MediaType.MULTIPART_FORM_DATA_TYPE)); 
+0

मल्टीपार्टफॉर्मडाटाऑटपुट पैकेज में है org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataOutput –

संबंधित मुद्दे