Great! Thanks all!

On Thu, May 14, 2015 at 5:53 PM, Supun Sethunga <[email protected]> wrote:

> Hi,
>
> This seemed to be a limit set by the cxf servlet. Got it solved by
> starting the server with
> -Dorg.apache.cxf.io.CachedOutputStream.Threshold=104857600 (increasing the
> threshold to 100MB)
>
> Thanks all for the help :-)
>
> Regards,
> Supun
>
> On Thu, May 14, 2015 at 3:43 PM, Nirmal Fernando <[email protected]> wrote:
>
>> Any help on this? Why this happens only in our case? What solutions other
>> products use?
>>
>> On Mon, May 11, 2015 at 4:55 PM, Supun Sethunga <[email protected]> wrote:
>>
>>> Hi Ruchira,
>>>
>>> Just noticed that jQuery Form Plugin [1] limits the upload size to
>>> 65.5KBs (Not sure whether this is limited by the plugin or the
>>> browser/tomcat). Simply, any file larger than 65.5KBs doesn't get uploaded.
>>>
>>> I tried setting <input type="hidden" name="MAX_FILE_SIZE"
>>> value="4194304"/> in the html form, also tried increasing the HttpRequest
>>> max size of tomcat7 as in [2]. Neither seemed to work.
>>>
>>> Any idea on how to increase this file size limit?
>>>
>>> [1] https://blueimp.github.io/jQuery-File-Upload
>>> [2]
>>> http://stackoverflow.com/questions/2947683/httprequest-maximum-allowable-size-in-tomcat
>>>
>>> Thanks,
>>> Supun
>>>
>>> On Sat, May 9, 2015 at 8:46 PM, Supun Sethunga <[email protected]> wrote:
>>>
>>>> Hi Ruchira,
>>>>
>>>> Managed to get it worked using the [2] library you suggested.Thanks for
>>>> the help  :-)
>>>>
>>>> Regards,
>>>> Supun
>>>>
>>>> On Thu, May 7, 2015 at 12:23 PM, Supun Sethunga <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi Ruchira,
>>>>>
>>>>> Thanks for the quick response. The reason for going for JavaScript
>>>>> was, the backend is secured with Basic Auth, and AFAIK there is no way to
>>>>> set security headers to the html form submission request.
>>>>>
>>>>> Will try out the suggested libraries.
>>>>>
>>>>> Thanks,
>>>>> Supun
>>>>>
>>>>> On Thu, May 7, 2015 at 12:08 PM, Ruchira Wageesha <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi Supun,
>>>>>>
>>>>>> First of all it has nothing to do with Jaggery. i.e. Jaggery is a
>>>>>> server side framework and what you do here is sending a file from your
>>>>>> browser to a JAX-RS backend.
>>>>>>
>>>>>> When you upload binaries from a browser, most probably you will have
>>>>>> to post it with multipart content type. For that, the simplest approach 
>>>>>> is
>>>>>> to use an HTML form with multipart type and just submit the form. In this
>>>>>> case browser will do the HTTP post, but not you JavaScript code.
>>>>>>
>>>>>> Else, you can use a client side JavaScript library which does file
>>>>>> uploading such as [1] or [2](this is used in ES as well). But if you 
>>>>>> don't
>>>>>> have any specific requirement to go with JavaScript, then just go with 
>>>>>> the
>>>>>> HTML form.
>>>>>>
>>>>>> /Ruchira
>>>>>>
>>>>>> [1] https://blueimp.github.io/jQuery-File-Upload
>>>>>> [2] http://malsup.com/jquery/form/#file-upload
>>>>>>
>>>>>> On Thu, Apr 23, 2015 at 5:20 PM, Supun Sethunga <[email protected]>
>>>>>> 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
>>>>>>> [email protected]
>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> *Ruchira Wageesha**Technical Lead*
>>>>>> *WSO2 Inc. - lean . enterprise . middleware |  wso2.com
>>>>>> <http://wso2.com>*
>>>>>>
>>>>>> *email: [email protected] <[email protected]>,   blog:
>>>>>> ruchirawageesha.blogspot.com <http://ruchirawageesha.blogspot.com>,
>>>>>> mobile: +94 77 5493444 <%2B94%2077%205493444>*
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Supun Sethunga*
>>>>> Software Engineer
>>>>> WSO2, Inc.
>>>>> http://wso2.com/
>>>>> lean | enterprise | middleware
>>>>> Mobile : +94 716546324
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Supun Sethunga*
>>>> Software Engineer
>>>> WSO2, Inc.
>>>> http://wso2.com/
>>>> lean | enterprise | middleware
>>>> Mobile : +94 716546324
>>>>
>>>
>>>
>>>
>>> --
>>> *Supun Sethunga*
>>> Software Engineer
>>> WSO2, Inc.
>>> http://wso2.com/
>>> lean | enterprise | middleware
>>> Mobile : +94 716546324
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> [email protected]
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>>
>> Thanks & regards,
>> Nirmal
>>
>> Associate Technical Lead - Data Technologies Team, WSO2 Inc.
>> Mobile: +94715779733
>> Blog: http://nirmalfdo.blogspot.com/
>>
>>
>>
>
>
> --
> *Supun Sethunga*
> Software Engineer
> WSO2, Inc.
> http://wso2.com/
> lean | enterprise | middleware
> Mobile : +94 716546324
>



-- 

Thanks & regards,
Nirmal

Associate Technical Lead - Data Technologies Team, WSO2 Inc.
Mobile: +94715779733
Blog: http://nirmalfdo.blogspot.com/
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to