AngularJS+;泽西邮政错误请求
我在泽西岛有以下用于文件上传的API:AngularJS+;泽西邮政错误请求,angularjs,jersey,Angularjs,Jersey,我在泽西岛有以下用于文件上传的API: @Path("/image/upload") @POST @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces("application/json") public Response Imageupload( @QueryParam("filename") String filename, @FormDataParam("file
@Path("/image/upload")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("application/json")
public Response Imageupload(
@QueryParam("filename") String filename,
@FormDataParam("file") InputStream fileInputString,
@Context ContainerRequestContext crc)
throws ConnectException, SQLException, InvalidCredentialsException, IOException, GeneralException {
}
我使用angular js上传文件:
_myApp.service('fileUpload', ['$rootScope', '$http', function($rootScope, $http) {
this.uploadFileToUrl = function(file, uploadUrl) {
var fd = new FormData();
fd.append('file', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {
'Content-Type': 'multipart/form-data',
'Authorization': 'Bearer ' + $rootScope.token
},
params:{
'filename':file.name
}
})
.success(function() {
})
.error(function() {
});
}
}]);
_myApp.controller('uploadImageController', ['$rootScope', '$scope', '$http', 'fileUpload', function($rootScope, $scope, $http, fileUpload) {
$rootScope.show = true;
$scope.upload = function() {
//$scope.fileObject is the File I am trying to upload
console.log($scope.fileObject);
var file = $scope.fileObject;
var uploadUrl = "http://xx.xx.xx.xx:8080/ImageAPIS/image/upload";
fileUpload.uploadFileToUrl(file, uploadUrl);
}
我得到以下错误:
400错误请求:客户端发送的请求在语法上不正确。我是否以错误的角度标准发布请求?我可以看到正在发送的有效载荷,球衣和发送的角度请求之间有什么不匹配?
我已经参考了以下文件上载代码-
因为您要将文件名附加到多部分正文(
fd.append('filename',File.name);
),所以您还应该获得多部分的名称,而不是查询参数。i、 e.@FormDataParam(“文件名”)字符串文件名
。我不知道这是否是错误的原因。我已经修改了表单数据,删除了附加的文件名,并将其作为参数发送。我仍然收到相同的错误。请尝试标题:{'Content-Type':undefined}
。我认为通过显式设置内容类型,您将丢失浏览器设置边界的功能,这将导致错误的请求。为什么设置内容类型是错误的:多部分/表单数据?设置内容类型:未定义是否意味着它将自动调整内容类型?是的,浏览器将设置内容类型以及附加到内容类型的边界。如果您不知道边界是什么,请在多部分上进行搜索。但边界是必需的。如果它不在那里,则会导致服务器发出错误的请求响应,因为您要将文件名附加到多部分正文(fd.append(
),您还应该获得多部分的名称,而不是查询参数。i、 e.@FormDataParam(“文件名”)字符串文件名
。我不知道这是否是错误的原因。我已经修改了表单数据,删除了附加的文件名,并将其作为参数发送。我仍然收到相同的错误。请尝试标题:{'Content-Type':undefined}
。我认为通过显式设置内容类型,您将丢失浏览器设置边界的功能,这将导致错误的请求。为什么设置内容类型是错误的:多部分/表单数据?设置内容类型:未定义是否意味着它将自动调整内容类型?是的,浏览器将设置内容类型以及附加到内容类型的边界。如果您不知道边界是什么,请在多部分上进行搜索。但边界是必需的。如果不存在,则会导致服务器发出错误的请求响应