Java AngularJS Formdata文件数组上载
我正在尝试一次上传(实际上是发布)许多小文件,并附带一些键、值对:Java AngularJS Formdata文件数组上载,java,angularjs,servlets,form-data,Java,Angularjs,Servlets,Form Data,我正在尝试一次上传(实际上是发布)许多小文件,并附带一些键、值对: $scope.uploadFiles = function(files) { if (files.length === 0) { return; } var formData = new FormData();
$scope.uploadFiles = function(files) {
if (files.length === 0) {
return;
}
var formData = new FormData();
formData.append('keyName1', 'keyValue1');
formData.append('keyName2', 'keyValue2');
formData.append('keyName3', 'keyValue3');
for (var i = 0; i < files.length; i++) {
formData.append('files[]', files[i]);
}
$http.post( '/myEndpoint', formData, {
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
}).success(function (result) {
console.log('YAY');
}).error(function () {
console.log('NAY');
});
}
$scope.uploadFiles=函数(文件){
如果(files.length==0){
返回;
}
var formData=new formData();
append('keyName1','keyValue1');
append('keyName2','keyValue2');
append('keyName3','keyValue3');
对于(var i=0;i
以下是Java后端:
@RequestMapping(value = "/myEndpoint", method = RequestMethod.POST)
@ResponseBody
public void uploadFiles(
@RequestParam("files") List<MultipartFile> fileList,
@RequestParam("keyName1") String keyName1,
@RequestParam("keyName2") String keyName2,
@RequestParam("keyName3") String keyName3,
HttpServletResponse response, HttpSession session) throws Exception {
log.debug(fileList.size()); // Always logs zero
}
@RequestMapping(value=“/myEndpoint”,method=RequestMethod.POST)
@应答器
公共无效上载文件(
@RequestParam(“文件”)列表文件列表,
@RequestParam(“keyName1”)字符串keyName1,
@RequestParam(“keyName2”)字符串keyName2,
@RequestParam(“keyName3”)字符串keyName3,
HttpServletResponse,HttpSession会话)引发异常{
log.debug(fileList.size());//日志始终为零
}
正在命中终结点,但文件列表长度为零。我也变了
List<MultipartFile> fileList to MultipartFile[] filesArray
List fileList to MultipartFile[]filesArray
但那没用,威瑟
有人能帮我照一下吗
干杯
Paul我使用GitHub上的一个库来帮助我使用Java Glassfish服务器完成这项任务 我只需要上传一个文件,下面是接收该文件的Java后端。此框架支持将多个文件上载到服务器
@POST
@Path("/Endpoint")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response whateverEndPoint(@FormDataParam("fileName") InputStream fileInputStream,
@FormDataParam("fileName") FormDataContentDisposition contentDispositionHeader,
@FormDataParam("additionalParameter") String additionalParameter) {
System.out.println(contentDispositionHeader.getFileName());
String output = "File Received on the server: ";
return Response.status(200).entity(output).build();
}
这是我使用框架的角度控制器:
angular.module('AppThing').controller('DemoController',function($rootScope,$scope,FileUploader){
//creating the uploader with the correct url
$scope.uploader = new FileUploader({
url : 'Endpoint',
method : 'POST',
alias: 'fileName',
autoUpload:true
});
//runs right after we add a file to the queue
$scope.uploader.onAfterAddingFile = function(item){
};
//runs right before we upload an item to the server
$scope.uploader.onBeforeUploadItem = function(item){
console.log('This is just before the image upload');
item.formData.push({'additionalParameter': $rootScope.additionalParameter});
};
$scope.uploader.onSuccessItem = function(item, response, status, headers) {
};
});
希望这对你有所帮助 角度:
$scope.uploadFiles = function(files) {
if (files.length === 0) {
return;
}
var formData = new FormData();
formData.append('keyName1', 'keyValue1');
formData.append('keyName2', 'keyValue2');
formData.append('keyName3', 'keyValue3');
for (var i = 0; i < files.length; i++) {
formData.append('file'+i, files[i]);
}
$http.post( '/myEndpoint', formData, {
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
}).success(function (result) {
console.log('YAY');
}).error(function () {
console.log('NAY');
});
}
$scope.uploadFiles=函数(文件){
如果(files.length==0){
返回;
}
var formData=new formData();
append('keyName1','keyValue1');
append('keyName2','keyValue2');
append('keyName3','keyValue3');
对于(var i=0;i
在Spring/Java端:
RequestMapping(value = "/myEndpoint", method = RequestMethod.POST)
public @ResponseBody Object uploadFiles(MultipartHttpServletRequest request, HttpServletResponse response) throws IOException {
//do stuff here...
final String keyName1= request.getParameter('keyName1');
//and so on......
Iterator<String> iterator = request.getFileNames();
MultipartFile multipartFile = null;
while (iterator.hasNext()) {
multipartFile = request.getFile(iterator.next());
//do something with the file.....
}
}
RequestMapping(value=“/myEndpoint”,method=RequestMethod.POST)
public@responseBy对象上载文件(MultipartTTpServletRequest请求、HttpServletResponse响应)引发IOException{
//在这里做事。。。
最终字符串keyName1=request.getParameter('keyName1');
//等等。。。。。。
迭代器迭代器=request.getFileNames();
MultipartFile MultipartFile=null;
while(iterator.hasNext()){
multipartFile=request.getFile(iterator.next());
//对文件执行某些操作。。。。。
}
}
顺便说一句,在你的角度方面,你总是可以一次结束文件或多次请求。这取决于您希望如何实现。for(var i=0;i