上传Java服务器端代码后如何从数组中删除第一个元素
我有一个多文件上传,当我选择两个文件和最后一个文件时,它会复制第一个文件两次,最后一个文件一次。当我选择三个文件时,它会创建第一个文件三次,第二个文件两次,最后一个文件一次。我的数组似乎有问题,每次迭代都不删除上传的文件?有人能帮忙修理吗上传Java服务器端代码后如何从数组中删除第一个元素,java,arrays,file-upload,Java,Arrays,File Upload,我有一个多文件上传,当我选择两个文件和最后一个文件时,它会复制第一个文件两次,最后一个文件一次。当我选择三个文件时,它会创建第一个文件三次,第二个文件两次,最后一个文件一次。我的数组似乎有问题,每次迭代都不删除上传的文件?有人能帮忙修理吗 private static String UPLOADED_FOLDER = "C://temp//"; @RequestMapping(value = { "/fileUpload" }, method = RequestMethod.POST) @Re
private static String UPLOADED_FOLDER = "C://temp//";
@RequestMapping(value = { "/fileUpload" }, method = RequestMethod.POST)
@ResponseBody
public String uploadFile( @RequestParam("number") String number, @RequestParam("files[]") MultipartFile[] files, MultipartHttpServletRequest req, HttpServletResponse res)
{
for (MultipartFile file : files) {
try {
File directory = new File(UPLOADED_FOLDER + number);
logger.info(directory.toString());
if (! directory.exists()){
directory.mkdir();
logger.info("directory created");
}
byte[] bytes = file.getBytes();
logger.info(bytes.toString());
String timeStamp = new SimpleDateFormat("yyyyMMddHHmm").format(new Date());
Random rand = new Random();
int randomNum = rand.nextInt((10 - 1) + 1) + 1;
Path path = Paths.get(UPLOADED_FOLDER + number + "//" + file.getOriginalFilename().split("\\.")[0] + " - " + timeStamp + randomNum + "." + file.getOriginalFilename().split("\\.")[1]);
logger.info(path.toString());
Files.write(path, bytes);
logger.info("You have successfully uploaded '" + file.getOriginalFilename() + "'");
//return("File Uploaded");
} catch (Exception e) {
res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
logger.error("Failed to upload file '" + file.getOriginalFilename() + "'", e);
//return("File Not Uploaded");
}
}
return "redirect:/fileUpload";
}
我看你的代码没有问题。我想你的问题在别的地方。当然,您可以忽略重复项,但如果是我,我宁愿尝试从源代码处解决问题。您认为每次迭代后都不会从阵列中删除上载的文件吗?如果是这样,我如何在每次循环后从数组中删除该文件。增强的for循环应该只处理每个数组元素一次,因此上传后不需要删除该元素。如有疑问,,记录阵列的长度并与预期的长度进行比较。2017-04-18 15:29:45.292 INFO c.g.o.i.controller.AjaxController.404-阵列长度:1 2017-04-18 15:29:45.293 INFO c.g.o.i.controller.AjaxController.410-c:\temp\600000\Capture-2017041815299.JPG 2017-04-18 15:29:45.299 INFO c.g.o.i.controller.AjaxController.412-您有已成功上载“Capture.JPG”2017-04-18 15:29:45.341 INFO c.g.o.i.controller.AjaxController.404-数组长度:2 2017-04-18 15:29:45.342 INFO c.g.o.i.controller.AjaxController.410-c:\temp\600000\Capture-2017041815292.JPGLooks类似于完成两次,因为我只选择了image Capture.JPG一次?我看不出你的代码有什么问题。我想你的问题在别的地方。当然,您可以忽略重复项,但如果是我,我宁愿尝试从源代码处解决问题。您认为每次迭代后都不会从阵列中删除上载的文件吗?如果是这样,我如何在每次循环后从数组中删除该文件。增强的for循环应该只处理每个数组元素一次,因此上传后不需要删除该元素。如有疑问,,记录阵列的长度并与预期的长度进行比较。2017-04-18 15:29:45.292 INFO c.g.o.i.controller.AjaxController.404-阵列长度:1 2017-04-18 15:29:45.293 INFO c.g.o.i.controller.AjaxController.410-c:\temp\600000\Capture-2017041815299.JPG 2017-04-18 15:29:45.299 INFO c.g.o.i.controller.AjaxController.412-您有已成功上载“Capture.JPG”2017-04-18 15:29:45.341 INFO c.g.o.i.controller.AjaxController.404-数组长度:2 2017-04-18 15:29:45.342 INFO c.g.o.i.controller.AjaxController.410-c:\temp\600000\Capture-2017041815292.JPGLooks是否像这样做了两次,因为我只选择了image Capture.JPG一次?