I am trying to integrate FineUploader in my play framework code. View part is set up properly and it is working fine.
I am not clear how to retrieve file in my controllers upload method. And other query parameters, qquuid, qqfilename, content-type e.tc.
Following is the dump of file upload request sent by FileUploader:-
Request Headers
Accept:application/json
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:1021645
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryk8BZISBKKjjqiWQ6
DNT:1
Host:localhost:9000
Origin:http://localhost:9000
Referer:http://localhost:9000/computers
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36
X-Requested-With:XMLHttpRequest
Request Payload
------WebKitFormBoundaryk8BZISBKKjjqiWQ6
Content-Disposition: form-data; name="id"
593
------WebKitFormBoundaryk8BZISBKKjjqiWQ6
Content-Disposition: form-data; name="qquuid"
bafb6448-1a87-40cc-abae-9624f37131cc
------WebKitFormBoundaryk8BZISBKKjjqiWQ6
Content-Disposition: form-data; name="qqfilename"
Test.png
------WebKitFormBoundaryk8BZISBKKjjqiWQ6
Content-Disposition: form-data; name="qqtotalfilesize"
1020995
------WebKitFormBoundaryk8BZISBKKjjqiWQ6
Content-Disposition: form-data; name="qqfile"; filename="Test.png"
Content-Type: image/png
------WebKitFormBoundaryk8BZISBKKjjqiWQ6--
I eventually found out by exploring play apis, sample code below.
Http.MultipartFormData body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart uploadFilePart = body.getFile("qqfile");
String fileName = uploadFilePart.getFilename();
File file = uploadFilePart.getFile();
Map<String,String[]> dataPart = request().body().asMultipartFormData().asFormUrlEncoded();
Iterator it = dataPart.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
String[] values = (String[]) pair.getValue();
System.out.println(pair.getKey() + " = " + values[0]);
}