我試圖使用Play框架2(JAVA)播放2.0.4文件上傳不起作用?總是「MissingFilePart」
要做到這一點來實現文件的上傳,我已經遵循以下指導:http://www.playframework.org/documentation/2.0/JavaFileUpload
在服務器端,我總是在MultipartFormData中獲取MissingFilePart的對象。
這是我的看法:
@form(action = routes.ImmediateCollections.savePoliceReport, 'enctype -> "multipart/form-data") {
<fieldset>
<div class="fileupload fileupload-new">
<span class="btn btn-file">
<span class="fileupload-new">Select file</span>
<span class="fileupload-exists">Change</span>
<input type="file" name="policeReportFile" id="policeReportFile"/>
</span>
<span class="fileupload-preview"></span>
<a href="#" class="close fileupload-exists" style="float: none">×</a>
</div>
</fieldset>
@controls {
@submitbutton()
}
}
這將生成以下HTML:(。對於那些想知道的跨度和div的,我使用的是優秀jasny bootstrap擴展)
<form action="/immediatecollections/save-policereport" method="POST" enctype="multipart/form-data">
<fieldset>
<div class="fileupload fileupload-new">
<span class="btn btn-file">
<span class="fileupload-new">Select file</span>
<span class="fileupload-exists">Change</span>
<input type="file" name="policeReportFile" id="policeReportFile">
</span>
<span class="fileupload-preview"></span>
<a href="#" class="close fileupload-exists" style="float: none">×</a>
</div>
</fieldset>
<div class="control-group">
<div class="controls">
<input type="submit" class="btn btn-success" value="Save">
</div>
</div>
</form>
請注意,我只有一個輸入字段。該表格僅用於一個目的:上傳1個文件。
這是我的控制器:
public static Result savePoliceReport() {
Http.MultipartFormData formData = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart policeReportFile = formData.getFile("policeReportFile");
if (policeReportFile != null) {
// move file to somewhere
// save metadata to database
// for simplicity's sake: return json success = true or false
ObjectNode jsonResult = Json.newObject();
jsonResult.put("success", true);
return ok(jsonResult);
} else {
ObjectNode jsonResult = Json.newObject();
jsonResult.put("success", false);
return badRequest(jsonResult);
}
}
這種方法在路由文件中定義是這樣的:
POST /immediatecollections/save-policereport controllers.ImmediateCollections.savePoliceReport
現在,當我上載的服務器端文件和調試,這是我所得到的請求:
如果我readi正確地說,它說文件內容丟失。發生了什麼?傳輸中的字節是否丟失?如果某件事失敗,爲什麼不玩拋出異常?
我已經在Chrome和Internet Explorer中試過這個,兩次都是相同的結果。
我在做什麼錯?謝謝!
阿失蹤,感謝您的答覆晚,但它最終被添加缺少的name屬性解決。 :-)我在這裏轉貼回覆 – Moeri