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
