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
