我正在使用 Java Play 框架和这个文件上传插件:http://blueimp.github.io/jQuery-File-Upload/ .阅读文档后 http://www.playframework.com/documentation/2.0/JavaFileUpload我在我的 Java Play Controller 中使用了这个特定的代码。
public static Result upload() {
File file = request().body().asRaw().asFile();
return ok("File uploaded");
}
我还将这条路线添加到我的项目中:
POST /upload controllers.Image.upload()
我的 View 模板:
@(scripts: Html)
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>jQuery File Upload Example</title>
</head>
<body>
<input id="fileupload" type="file" name="files[]" data-url="/upload">
@scripts
<script>
$(function () {
$('#fileupload').fileupload({
dataType: 'json',
add: function (e, data) {
data.context = $('<p/>').text('Uploading...').appendTo(document.body);
data.submit();
},
done: function (e, data) {
data.context.text('Upload finished.');
}
});
});
</script>
</body>
现在,如果我上传图片, Firebug 会显示以下错误:
"NetworkError: 500 Internal Server Error - http://localhost:9000/upload"
错误是由 Controller 上传操作中的这一行引起的:
File file = request().body().asRaw().asFile();
有人知道解决办法吗?感谢您的帮助。
最佳答案
我想您可以通过不同方式访问您的上传文件。你可以使用类似的东西:
Http.MultipartFormData body = request().body().asMultipartFormData();
for(Http.MultipartFormData.FilePart part : body.getFiles()){
Logger.debug(part.getFilename());
Logger.debug(part.getKey());
Logger.debug(part.getContentType());
Logger.debug(part.getFile().getName());
Logger.debug(part.getFile().getAbsolutePath());
Logger.debug(String.valueOf(part.getFile().getTotalSpace()));
}
一个你有你的 java.io.File 实例你可以做任何你想做的事
关于java - jQuery-File-Upload with Java Play Framework NetworkError : 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19810278/