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
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to