Links for the above

[1]
http://stackoverflow.com/questions/10801122/handling-multipart-attachments-in-cxf-apis


On Fri, Apr 24, 2015 at 10:40 AM, Malith Munasinghe <mali...@wso2.com>
wrote:

> Hi Supun,
>
> As discussed in [1] for CXF 2.6.x api file uploading using multipart
> content type can be done using Attachement Argument type instead of
> InputStream. Can you try using
>
> @Multipart(value = "file") @NotNull Attachment attachment
> Then use
>
> InputStream inputStream = attcehment.getObject(InputStream.class);
>
> to get the InputStream.
>
> Thank you,
> Regards
>
>
> On Fri, Apr 24, 2015 at 9:26 AM, Supun Sethunga <sup...@wso2.com> wrote:
>
>> Hi Malith,
>>
>> Using the latest Chrome/Firefox versions. This isn't working when called
>> from a java-client either.
>>
>> Catch here is, rest of the form data get submitted correctly. AFAIU
>> problem is in the way the file is streamed to the server (the way it gets
>> attached to the request).
>>
>> Thanks,
>> Supun
>>
>> On Fri, Apr 24, 2015 at 9:14 AM, Malith Munasinghe <mali...@wso2.com>
>> wrote:
>>
>>> Hi Supun,
>>>
>>> Can you check the browser version of yours ? As of [1] FormData
>>> emulation for older browser (Below Safari 5 / Firefox 4) you might have to
>>> change it to the way mentioned in top Ranked answer.
>>>
>>> [1]
>>> http://stackoverflow.com/questions/5392344/sending-multipart-formdata-with-jquery-ajax
>>>
>>> On Fri, Apr 24, 2015 at 9:02 AM, Supun Sethunga <sup...@wso2.com> wrote:
>>>
>>>> Hi Malith/Thilini,
>>>>
>>>> Thanks for the suggestion. I had tried that. Didn't work :/
>>>>
>>>> Regards,
>>>> Supun
>>>>
>>>> On Fri, Apr 24, 2015 at 8:45 AM, Thilini Cooray <thili...@wso2.com>
>>>> wrote:
>>>>
>>>>> Hi Supun,
>>>>>
>>>>> [1] also suggests to make contentType false.
>>>>>
>>>>> [1]
>>>>> http://stackoverflow.com/questions/12831680/jquery-ajax-multipart-form-data-not-sending-data
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Fri, Apr 24, 2015 at 8:44 AM, Malith Munasinghe <mali...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Supun!
>>>>>>
>>>>>> Try Making contentType: false,
>>>>>>
>>>>>> Regards,
>>>>>> Malith.
>>>>>>
>>>>>> On Thu, Apr 23, 2015 at 5:20 PM, Supun Sethunga <sup...@wso2.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Requirement was to let a user upload a data file from a UI
>>>>>>> (html/jaggery), and the backend which handles file uploading is exposed 
>>>>>>> as
>>>>>>> a REST service. Backend service method I wrote looks as follows:
>>>>>>>
>>>>>>>     @POST
>>>>>>>>     @Produces(MediaType.APPLICATION_JSON)
>>>>>>>>     @Consumes(MediaType.MULTIPART_FORM_DATA)
>>>>>>>>     public Response uploadDataset(@Multipart("datasetName") String
>>>>>>>> datasetName,
>>>>>>>>                                   @Multipart("version") String
>>>>>>>> version,
>>>>>>>>                                   @Multipart("description") String
>>>>>>>> description,
>>>>>>>>                                   @Multipart("sourceType") String
>>>>>>>> sourceType,
>>>>>>>>                                   @Multipart("destination") String
>>>>>>>> destination,
>>>>>>>>                                   @Multipart("sourcePath") String
>>>>>>>> sourcePath,
>>>>>>>>                                   @Multipart("dataFormat") String
>>>>>>>> dataFormat,
>>>>>>>>                                   @Multipart("file") InputStream
>>>>>>>> inputStream) {
>>>>>>>>         . . .
>>>>>>>>         . . .
>>>>>>>>     }
>>>>>>>
>>>>>>>
>>>>>>> The InputStream is then written to a file at the server side. This
>>>>>>> method works fine when I call this with CURL using:
>>>>>>>
>>>>>>> *curl -X POST -b cookies  http://localhost:9763/api/datasets
>>>>>>>> <http://localhost:9763/api/datasets> -H "Authorization: Basic
>>>>>>>> YWRtaW46YWRtaW4=" -H "Content-Type: multipart/form-data" --form
>>>>>>>> datasetName=TestDataset --form version=1.0.0 --form
>>>>>>>> description=TestDescription --form sourceType=file --form 
>>>>>>>> destination=file
>>>>>>>> --form dataFormat=CSV --form
>>>>>>>> file=@/home/supun/Supun/MachineLearning/data/IndiansDiabetes.csv --form
>>>>>>>> sourcePath=/temp*
>>>>>>>
>>>>>>>
>>>>>>> Also works fine when I used Chrome's REST client.
>>>>>>>
>>>>>>> However,  when I call the same service, using AJAX, the file is
>>>>>>> written with empty content. Follow is the sample snippet.
>>>>>>>
>>>>>>>
>>>>>>>> *var formData = new FormData();*
>>>>>>>> *  formData.append("file", fileInput[0]['files'][0],
>>>>>>>> 'IndiansDiabetes.csv');*
>>>>>>>> * formData.append("datasetName", name);*
>>>>>>>> * formData.append("version", version);*
>>>>>>>> * formData.append("description", comments);*
>>>>>>>> * formData.append("sourceType", dataSourceType);*
>>>>>>>> * formData.append("sourcePath", null);*
>>>>>>>> * formData.append("destination", dataTargetType);**
>>>>>>>> formData.append("dataFormat", dataType);*
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> *       var baseUrl = getBaseUrl(window.location.href);*
>>>>>>>> *       $.ajax({*
>>>>>>>> *           type: 'POST',*
>>>>>>>> *           url: baseUrl + '/api/datasets', *
>>>>>>>> *           contentType: "multipart/form-data",*
>>>>>>>> *    processData: false,*
>>>>>>>> *           data: formData,**           beforeSend : function(xhr)
>>>>>>>> {*
>>>>>>>>
>>>>>>>> *                xhr.setRequestHeader("Authorization", "Basic " +
>>>>>>>> "YWRtaW46YWRtaW4=");*
>>>>>>>> *            },*
>>>>>>>> *            success : function(res){*
>>>>>>>> *           console.log('success');*
>>>>>>>> *            },*
>>>>>>>> *            error :  function(res){*
>>>>>>>> *           console.log('failed');*
>>>>>>>> *            }   *
>>>>>>>> *        });** })*
>>>>>>>
>>>>>>>
>>>>>>> One thing I noticed was, When calling the service using CURL and
>>>>>>> REST-Client, the *@Multipart("file") InputStream inputStream* binds
>>>>>>> to a "LoadingByteArrayOutputStream", but when calling from AJAX (or even
>>>>>>> with a java client) it binds to a
>>>>>>> "org.apache.cxf.attachment.DelegatingInputStream", and hence writing an
>>>>>>> empty content to the server.
>>>>>>>
>>>>>>> Any idea on how to overcome this?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Supun
>>>>>>>
>>>>>>> --
>>>>>>> *Supun Sethunga*
>>>>>>> Software Engineer
>>>>>>> WSO2, Inc.
>>>>>>> http://wso2.com/
>>>>>>> lean | enterprise | middleware
>>>>>>> Mobile : +94 716546324
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Dev mailing list
>>>>>>> Dev@wso2.org
>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Malith Munasinghe | Software Engineer
>>>>>> M: +94 (071) 9401122
>>>>>> E: mali...@wso2.com
>>>>>> W: http://wso2.com
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> Dev@wso2.org
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best Regards,
>>>>>
>>>>> *Thilini Cooray*
>>>>> Software Engineer
>>>>> Mobile : +94 (0) 774 570 112 <%2B94%20%280%29%20773%20451194>
>>>>> E-mail : thili...@wso2.com
>>>>>
>>>>> WSO2 Inc. www.wso2.com
>>>>> lean.enterprise.middleware
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Supun Sethunga*
>>>> Software Engineer
>>>> WSO2, Inc.
>>>> http://wso2.com/
>>>> lean | enterprise | middleware
>>>> Mobile : +94 716546324
>>>>
>>>
>>>
>>>
>>> --
>>> Malith Munasinghe | Software Engineer
>>> M: +94 (071) 9401122
>>> E: mali...@wso2.com
>>> W: http://wso2.com
>>>
>>
>>
>>
>> --
>> *Supun Sethunga*
>> Software Engineer
>> WSO2, Inc.
>> http://wso2.com/
>> lean | enterprise | middleware
>> Mobile : +94 716546324
>>
>
>
>
> --
> Malith Munasinghe | Software Engineer
> M: +94 (071) 9401122
> E: mali...@wso2.com
> W: http://wso2.com
>



-- 
Malith Munasinghe | Software Engineer
M: +94 (071) 9401122
E: mali...@wso2.com
W: http://wso2.com
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to