chrome上传文件夹

编程入门 行业动态 更新时间:2024-10-10 22:24:19

chrome上传<a href=https://www.elefans.com/category/jswz/34/1771393.html style=文件夹"/>

chrome上传文件夹

目前主流浏览器仅chrome11及以上版本支持文件夹的上传操作

html代码
<form action="/FileServlet" method="post" enctype="multipart/form-data"><input type="file" name="folder" multiple webkitdirectory/><button type="submit" value="上传"></button><%--文件夹下所有文件的信息--%><div id="folder_message"></div>
</form>
js代码
$("#folder").on("change", "input[type='file']", function(e) {var files = e.target.files; // FileListfor (var i = 0, f; f = files[i]; ++i){console.log(files[i].webkitRelativePath);$("#folder_message").text($("#folder_message").text() + files[i].webkitRelativePath+"\n");}
});

后台使用Java接收文件夹,用其它语言类似
导入外部jar包

<!--  -->
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version>
</dependency>
Java代码
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 验证上传内容的类型String contentType = request.getContentType();if (contentType.contains("multipart/form-data")) {try {// 解析获取的文件List<FileItem> fileItems = getFileItem(request);// 处理上传的文件for (FileItem fileItem : fileItems) {if (!fileItem.isFormField()) {String fileName = fileItem.getName();// 获取文件的各级目录List<String> separatedPath = getSeparatedPath(fileName);// 扫描文件目录结构String temp = "D:";for (int i = 0; i < separatedPath.size() - 1; i++) {temp += "/" + separatedPath.get(i);// 若父级目录目录不存在,创建之if (!new File(temp).exists()) {new File(temp).mkdir();}}// 写入文件writeFile(fileItem, temp, separatedPath.get(separatedPath.size() - 1));}}} catch (FileUploadException e) {response.getWriter().print("文件夹过大,无法上传");} catch (Exception e) {e.printStackTrace();}}        
}/*** 获取request对象中包含的文件列表** @throws FileUploadException*/
private List<FileItem> getFileItem(HttpServletRequest request) throws FileUploadException {DiskFileItemFactory factory = new DiskFileItemFactory();// 设置内存中存储文件的最大值factory.setSizeThreshold(maxMemSize);// 创建一个新的文件上传处理程序ServletFileUpload upload = new ServletFileUpload(factory);// 设置最大上传的文件大小upload.setSizeMax(maxFileSize);return upload.parseRequest(request);
}/*** 向磁盘写入文件** @param fileItem 文件项,包含文件内容* @param filePath 文件路径,不包含文件名* @param fileName 文件名,不包含路径*/
private void writeFile(FileItem fileItem, String filePath, String fileName) throws Exception {File file = new File(filePath, fileName);fileItem.write(file);
}/*** 从文件路径中获取文件名及各级父目录** @param filePath 文件相对项目目录的路径* @return List<String> (0 ~ n - 2) :各级父目录名称* n - 1       :不包含路径的文件名* 示例:filePath --- taskName/src/main/java/test.java* 返回["taskName", "src", "main", "java", "test.java"]*/
private List<String> getSeparatedPath(String filePath) {List<String> result = new ArrayList<>();StringTokenizer tokenizer = new StringTokenizer(filePath, "/");while (tokenizer.hasMoreElements()) {result.add(tokenizer.nextToken());}return result;
}

更多推荐

chrome上传文件夹

本文发布于:2024-03-14 16:08:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736841.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件夹   上传   chrome

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!