今天我弄了一下文件夹上传(很简单的

首先,我们的html需要这样写

<form action="/file/upload" enctype="multipart/form-data" method="post">

<input type="hidden" name="type" value="1"/>

<input id="dir" type="file" name="file" webkitdirectory mozdirectory/>

<input id="uploadDir" type="submit" value="提交文件夹">

</form>

这个一定要加上去

enctype="multipart/form-data" method="post"

还有

webkitdirectory mozdirectory

如果没有在Spring 里配置multipartResolver会报错,配置一下就好了

<bean id="multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- 上传文件大小上限,单位为字节(10MB) -->

<property name="maxUploadSize">

<value>999999999999999999</value>

</property>

<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->

<property name="defaultEncoding">

<value>UTF-8</value>

</property>

</bean>

然后就是我们的后台

@RequestMapping("/upload")

public Message upload(@RequestParam("type")int type, @RequestParam("file") MultipartFile[] file){

for(MultipartFile f:file){

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(getProjectPath() + "/" + name);

file1.mkdirs();

file1.createNewFile();

f.transferTo(file1);

}

System.out.println(f.getOriginalFilename() + "   iii         --------");

System.out.println("sssss   ");

}catch (Exception e){

e.printStackTrace();

}

}

return new Message(true,"成功");

}

我们需要将MultipartFile转换成这个对象

CommonsMultipartFile f2 = (CommonsMultipartFile) f;

因为我们需要里面的FileItem来获得相对路径

获得了相对路径,然后我们就用项目路径和这个相对路径加上去

然后创建文件夹,并写入到服务器的绝对路径就行了

前端效果:

后台服务端目录:F:\Git\up6\upload\2019\04\25\096bd8e474d646c79e2de23c4066667e

由上图可以看出,上传后保留了目录结构,保证了文件夹的不变性,完整的将文件夹上传了。

Demo下载地址:https://dwz.cn/fgXtRtnu

java web 实现文件夹上传(保留目录结构)的更多相关文章

  1. Web大文件(夹)上传(断点续传)控件-Xproer.HttpUploader6

    版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  2. Java web开发——文件的上传和下载

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  3. web选择文件夹上传

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  4. Web大文件(夹)上传(断点续传)控件发布-Xproer.HttpUploader6

    版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  5. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

  6. asp.net (web)选择文件夹 上传文件

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  7. Java Web之文件的上传及下载

    一.文件的上传 1. 简介 > 将一个客户端的本地的文件发送到服务器中保存. > 上传文件是通过流的形式将文件发送给服务器. 2.表单的设置 1.向服务器上传一个文件时,表单要使用post ...

  8. Java Web 项目的文件/文件夹上传下载

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  9. Java web开发——文件夹的上传和下载

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

随机推荐

  1. union和union all区别

    如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并在一起显示出来. union和unio ...

  2. Oracle高级查询之OVER

    注释:为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的 oracel的高级用法:rank()/dense_rank() over(partition by ...orde ...

  3. nvl 与 nvl2

    NVL函数 Oracle/PLSQL中的一个函数. 格式为: NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值, ...

  4. hdu 5491(2015合肥网赛)The Next

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5491 题意就是,T组测试数据.然后L,S1,S2.L的二进制中有x个1,x满足  S1<=x< ...

  5. hdu 1010(DFS) 骨头的诱惑

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意从S出发,问能否在时间t的时候到达终点D,X为障碍 需要注意的是要恰好在t时刻到达,而不是在t时间 ...

  6. 三分钟分布式CAP理论

    分布式系统架构理论,定义了三种指标,理论说我们最多只能满足两个. ## 分布式系统 首先我们这个理论所说的分布式系统,是指系统内会共享数据,互相有连接有交互,才能完成系统功能的的分布式系统.而这个理论 ...

  7. day 3:注释,缩进

    本节内容: 1,注释 2,缩进 1,注释: 使用#可以注释单行 # print("hello world") 三个双引号也可以注释多行 """ pri ...

  8. python 打开文件对话框 filedialog tkinter GUI 编程

    - -读取文件的gui编程 # _*_ coding:utf-8 _*_ import tkinter from tkinter import filedialog def openfiles2(): ...

  9. shell脚本返回字符串

    shell脚本的return只能返回数值类型,可是我们很多时候想返回字符串 #!/bin/sh function getStr () { String="very good" ec ...

  10. ps教程分享:一定要记住这20种PS技术!

    一定要记住这20种PS技术!会让你的照片美的不行! 一种简单的数码照片后期润饰 1)打开图片,执行色像/饱和度(-40)降低饱和度. 2)新建一图层,将图层模式改为柔光,用画笔工具将需要润饰的部分画几 ...