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
