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

首先,我们的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. 28- foreach里面实现一次遍历两个链表

    由于业务需求,要在一个foreach里面实现一次遍历两个链表:后台传来的是连个list:  分别是 <c:set var = "i" value = "0" ...

  2. 操作符offset

    操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址. assume cs:codesg codesg segment start: mov ax, offset star ...

  3. Aspose.Words二 基础

    1.目录样式 doc.Styles[Aspose.Words.StyleIdentifier.Toc1].Font.Size = 14; doc.Styles[Aspose.Words.StyleId ...

  4. HTML DOM 事件对象

    HTML DOM 事件对象 由 youj 创建,小路依依 最后一次修改 2016-08-04 HTML DOM 事件 HTML DOM 事件 HTML DOM 事件允许Javascript在HTML文 ...

  5. 同一个线程多次调用start()会出现的问题

    结果: 线程首先会运行一次,然后抛出java.lang.IllegalThreadStateException异常. 根据控制台的异常信息,定位到Thread.java的第708行,也就start() ...

  6. BZOJ1123或洛谷3469 [POI2008]BLO-Blockade

    BZOJ原题链接 洛谷原题链接 若第\(i\)个点不是割点,那么只有这个点单独形成一个连通块,其它点依旧连通,则答案为\(2\times (n-1)\). 若第\(i\)个点是割点,那么去掉这个点相关 ...

  7. zz Alex's BLOG 串口连接

    using System; using System.Collections.Generic;using System.ComponentModel;using System.Data;using S ...

  8. jquery单行文字上下循环滚动

    html代码: <div class="box"> <div class="t_news"> <b>已关联奖励账号.昵称:& ...

  9. java 内存, 类加载g

    1. java 内存区域 方法区 虚拟机栈 本地方法栈 堆 程序计数器 其中 :  方法区  和 堆 是所有线程共享的 , 其他是线程隔离的 1.  程序计数器 : 可以看做是当前线程所执行的字节码的 ...

  10. Mac版Java安装与配置

    一.下载并安装JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 双击下载的 ...