上传文件夹,并批量修改文件名

上传文件夹,并批量修改文件名


这是上传文件的拓展,具体请 点击这里
前端页面
注意 enctype="multipart/form-data"和webkitdirectory

<form class="form-horizontal" id="upZuopin" method="post"   enctype="multipart/form-data">
	
							  <div class="form-group">
							    <label class="col-sm-2 control-label">上传作品</label>
							    <div class="col-sm-10">
		<input type="file" class="form-control"   name="fileA"  webkitdirectory mozdirectory>
		<input type="file" class="form-control"   name="fileB"  webkitdirectory mozdirectory>
								</div>
							  </div>
							<div class="form-group" style="text-align: center">
								<button class="btn btn-default" onclick="upZuopin()">提交</button>
							</div>
						</form>

第一种写法{不保留目录结构}

 @RequestMapping("shangchuan.html")
    public String shangchuanAgain(
            @RequestParam("fileA") CommonsMultipartFile filesA[],
            @RequestParam("fileB") CommonsMultipartFile filesB[],
            HttpServletRequest request, ModelMap model) {
        List<String> list=new ArrayList<>();
        // 上传位置
        String pathA ="F:\\360MoveData\\Users\\Administrator\\Desktop\\注释结果保存\\注释结果保存\\A\\";
        String pathB ="F:\\360MoveData\\Users\\Administrator\\Desktop\\注释结果保存\\注释结果保存\\B\\";
        File fA = new File(pathA);
        if (!fA.exists())
            fA.mkdirs();
        for (int i = 0; i < filesA.length; i++) {
            list.add(UUID.randomUUID().toString());
            // 获得原始文件名
            String fileNameA = filesA[i].getOriginalFilename();
            System.out.println("原始文件名:" + fileNameA);
            // 新文件名
            if (!filesA[i].isEmpty()) {
                try {
                    FileOutputStream fos = new FileOutputStream(pathA
                            +i+ fileNameA.split("[.]")[0]+list.get(i)+fileNameA.substring(fileNameA.lastIndexOf(".")));
                    InputStream in = filesA[i].getInputStream();
                    int b = 0;
                    while ((b = in.read()) != -1) {
                        fos.write(b);
                    }
                    fos.close();
                    in.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            System.out.println("上传图片到:" + pathA
                    +i+  fileNameA.split("[.]")[0]+list.get(i)+fileNameA.substring(fileNameA.lastIndexOf(".")));

        }

        File fB = new File(pathB);
        if (!fB.exists())
            fB.mkdirs();
        for (int i = 0; i < filesB.length; i++) {
            // 获得原始文件名
            String fileNameB = filesB[i].getOriginalFilename();
            System.out.println("原始文件名:" + fileNameB);
            // 新文件名
            if (!filesB[i].isEmpty()) {
                try {
                    FileOutputStream fos = new FileOutputStream(pathB
                            +i+  fileNameB.split("[.]")[0]+list.get(i)+fileNameB.substring(fileNameB.lastIndexOf(".")));
                    InputStream in = filesB[i].getInputStream();
                    int b = 0;
                    while ((b = in.read()) != -1) {
                        fos.write(b);
                    }
                    fos.close();
                    in.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            System.out.println("上传图片到:" + pathB
                    +i+  fileNameB.split("[.]")[0]+list.get(i)+fileNameB.substring(fileNameB.lastIndexOf(".")));

        }
        return "true";

    };

第二种写法{保留目录结构}

 @RequestMapping("shangchuan.html")
    public String shangchuanAgain(
            @RequestParam("fileA") CommonsMultipartFile filesA[],
            @RequestParam("fileB") CommonsMultipartFile filesB[],
            HttpServletRequest request, ModelMap model) {
        int i = 0;

        // 上传位置
        String pathA ="F:\\360MoveData\\Users\\Administrator\\Desktop\\";
        String pathB ="F:\\360MoveData\\Users\\Administrator\\Desktop\\";
        for(MultipartFile f:filesA){
            File file1 ;
            String name="";
            try {
                if (f instanceof CommonsMultipartFile) {
                    //转换成这个对象,然后我们需要通过里面的FileItem来获得相对路径
                    CommonsMultipartFile f2 = (CommonsMultipartFile) f;
                    name = f2.getFileItem().getName();
                    System.out.println(name + "        ---------相对路径");

                    file1 = new File(pathA + name.split("[.]")[0]+"拓片"+i+f.getOriginalFilename().substring(f.getOriginalFilename().lastIndexOf(".")));
                    i++;
                    file1.mkdirs();
                    file1.createNewFile();
                    //写入磁盘
                    f.transferTo(file1);
                }
                System.out.println(f.getOriginalFilename() + "   iii         --------");
            }catch (Exception e){
                e.printStackTrace();
            }

        }

        int j = 0;
        for(MultipartFile f:filesB){
            File file1 ;
            String name="";
            try {
                if (f instanceof CommonsMultipartFile) {
                    //转换成这个对象,然后我们需要通过里面的FileItem来获得相对路径
                    CommonsMultipartFile f2 = (CommonsMultipartFile) f;
                    name = f2.getFileItem().getName();
                    System.out.println(name + "        ---------相对路径");

                    file1 = new File(pathB + name.split("[.]")[0]+"注释"+j+f.getOriginalFilename().substring(f.getOriginalFilename().lastIndexOf(".")));
                    j++;
                    file1.mkdirs();
                    file1.createNewFile();
                    //写入磁盘
                    f.transferTo(file1);
                }
                System.out.println(f.getOriginalFilename() + "   iii         --------");
            }catch (Exception e){
                e.printStackTrace();
            }

        }

        return "true";

    };

仍有疑问可以加QQ275375496讨论

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值