我正在使用 AngularJS 开发 Grails (2.3.7) 应用程序。我必须在我的应用程序中上传文件。由于前端由 Angular 管理,我从 Angular 控制器上传我的文件。我已经经历了这个 和这个讨论,并尝试上传如下。
我的文件上传器是
<input type="file" ng-file-select="onFileSelect($files)">
角度控制器是
myapp.controller('createWebController',['$scope','$http','$upload',function($scope,$http,$upload){
$scope.onFileSelect = function($files) {
var file = $files[0];
console.log(file)
$upload.upload({
url: 'UploadLogo/upload', //upload.php script, node.js route, or servlet url
file: file,
method: 'POST' ,
fileFormDataName: "myFile",
}).progress(function(evt) {
console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total));
}).success(function(data, status, headers, config) {
// file is uploaded successfully
console.log(data);
})
.error(function(data){ console.log(data)})
;
};
}])
在服务器上,我正在使用此服务,上传处理程序代码是
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.MultipartFile
import org.codehaus.groovy.grails.web.context.ServletContextHolder
class UploadLogoController {
FileUploadService fileUploadService
def upload() {
def avatarImage = request.getFile('file')
if (!avatarImage.isEmpty())
{
userInstance.avatar = fileUploadService.uploadFile(avatarImage, "logo.png", "~/Desktop/upload")
render "ok"
}
else
{
render "Empty"
}
}
}
但问题是我500 (Internal Server Error)
从 grails 得到一个。文件未上传。
也得到响应,Cannot invoke method isEmpty() on null object
这意味着文件尚未发送到服务器。这是什么问题..请帮助..