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

Reply via email to