Il file caricato contiene solo “WebKitFormBoundary”

Non so davvero cosa sta succedendo qui. Ogni volta che provo a caricare un file, tutto il file contiene:

------WebKitFormBoundaryJ0uWMNv89fcUsC1t--

Ho cercato gli ultimi 2 giorni per una sorta di spiegazione, ma sto solo andando in circolo. Non ho idea del perché stia succedendo.

Modulo:

 

Javascript:

 $('#upload-button').click(function(e){ e.preventDefault(); var formData = new FormData($('#upload-file')); $.ajax({ url: '/image', type: 'POST', xhr: function() { var myXhr = $.ajaxSettings.xhr(); if(myXhr.upload){ myXhr.upload.addEventListener('progress',progressHandlingFunction, false); } return myXhr; }, data: formData, cache: false, // contentType: false, processData: false }); }); 

controller:

 def image = Action(parse.temporaryFile) { request => request.body.moveTo(new File("/tmp/picture")) Ok("File uploaded") } 

Il problema stava accadendo nel Javascript, non nella Scala. Non stavo riferendo gli elementi del modulo in modo improprio.

 var formData = new FormData($('#upload-file')[0]); 

Tuttavia, ho anche avuto problemi con parse.temporaryFile e non stava archiviando correttamente il file usando il codice sopra. Quando ho ispezionato i file memorizzati in un editor di testo, ho notato che aveva ancora ------WebKitFormBoundaryJ0uWMNv89fcUsC1t-- roba all’inizio del file, seguito dalle informazioni del modulo, seguito dai byte del file.

Per risolvere questo problema, ho semplicemente utilizzato il metodo predefinito per il caricamento multipartform secondo la Documentazione di gioco , e ha funzionato perfettamente.

 def image = Action(parse.multipartFormData) { request => request.body.file("picture").map { picture => val filename = picture.filename picture.ref.moveTo(new File(s"/tmp/picture/$filename")) Ok("ok") }.getOrElse { InternalServerError("file upload error") } }