JAVA SpringMVC + FormDate + Vue + file表单 ( 实现 js 单文件和多文件上传 )
JS 部分
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文件上传</title> <script src="../js/commom.js"></script> <script src="../js/awi.js"></script> <script src="../js/vue.js"></script> <script src="../js/jquery.js"></script> <style type="text/css"> html, body{ padding: 0; margin: 0 } #header{ position: fixed; overflow: hidden; top: 0; width: 720px; height: 88px; background: #FF0000; } .header_back{ float: left; width: 100px; font-size: 50px; color: white; height: 88px; line-height: 80px; text-indent: 30px; } .header_title{ float: left; width: 520px; height: 88px; line-height: 88px; font-size: 36px; text-align: center; color: white; font-weight: bold; } #box { width: 720px; margin: 88px 0 0 0; } .img-list { width: 720px; } .img-list > img, .img-select, .file-select { display: block; width: 720px; height: 500px; } .file-select { margin: -500px 0 0 0; opacity: 0; } .file-send { width: 720px; height: 100xp; text-align: center; line-height: 100px; background: #000000; color: white; font-size: 36px; } </style> </head> <body> <div id="header"> <div class="header_back"><</div> <div class="header_title">文件上传</div> </div> <div id="box"> <div class="img-list"> <img v-for="img in imgArr" :src="img" /> </div> <img class="img-select" src="../img/001.png" /> <input class="file-select" type="file" multiple="multiple" /> <input class="file-send" type="button" value="发送" /> </div> </body> <script type="text/javascript"> var vm = new Vue({ data: { imgArr: [] } }).$mount('#box'); var formData = new FormData(); $('.file-select').on('change', function(){ var files = this.files; var imgArr = []; for(var i = 0; i < files.length; i++){ imgArr[i] = awi.fileToDataUrl(files[i]); formData.append('file', files[i]); } vm.imgArr = imgArr; console.dir(formData) }); $('.file-send').on('click', function(){ var xhr = new XMLHttpRequest(); xhr.onerror = function(err){ console.error("上传失败!" + err.message); } xhr.onload = function(){ console.log(xhr.responseText); } xhr.open("POST", http + 'file/more_upload'); xhr.send(formData); }); </script> </html>
JAVA 代码
package controller.home; import java.io.File; import java.io.Writer; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import com.alibaba.fastjson.JSON; @Controller @CrossOrigin // 允许跨域 @RequestMapping("/file") public class FileController { // 单文件上传 @RequestMapping(value = "/upload", method = {RequestMethod.POST}) public void upload( @RequestParam("file") MultipartFile file, HttpServletRequest req, Writer writer ) throws Exception{ // 获取项目文件保存目录路径 String projectPath = req.getServletContext().getRealPath("WEB-UD") + "/"; // 获取真实存放的相对路径 String relativePath = new Date().getTime() + file.getOriginalFilename(); // 实例化文件对象, 并判断是否存在, 不存在创建目录 File filePath = new File(projectPath + relativePath); if (!filePath.exists()) { filePath.mkdirs(); } // 接收并保存文件 file.transferTo(filePath); writer.write(relativePath); } // 多文件上传 @RequestMapping(value = "/more_upload", method = {RequestMethod.POST}) public void moreUpload( @RequestParam("file") MultipartFile[] files, HttpServletRequest req, Writer writer ) throws Exception{ // 获取项目文件保存目录路径 String projectPath = req.getServletContext().getRealPath("WEB-UD") + "/"; // 定义存放地址 List<String> relativePathArr = new ArrayList<String>(); // 循环文件数组 for(MultipartFile file : files){ // 获取存放的相对路径 String relativePath = new Date().getTime() + file.getOriginalFilename(); // 实例化文件对象, 并判断是否存在, 不存在创建目录 File filePath = new File(projectPath + relativePath); if (!filePath.exists()) { filePath.mkdirs(); } // 接收并保存文件 file.transferTo(filePath); relativePathArr.add(relativePath); } writer.write(JSON.toJSONString(relativePathArr)); } }
JAVA SpringMVC + FormDate + Vue + file表单 ( 实现 js 单文件和多文件上传 )的更多相关文章
- django 基于form表单上传文件和基于ajax上传文件
一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...
- SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html
SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...
- [html5+java]文件异步读取及上传核心代码
html5+java 文件异步读取及上传关键代码段 功能: 1.多文件文件拖拽上传,file input 多文件选择 2.html5 File Api 异步FormData,blob上传,图片显示 3 ...
- 关于vue+element对ie9的兼容el-upload不支持在IE9上传
关于vue+element对ie9的兼容el-upload不支持在IE9上传 https://lian-yue.github.io/vue-upload-component/#/zh-cn/ 解决方案 ...
- 文件上传---form表单,ajax,jquery,以及iframe无刷新上传 (processData,contentType讲解)
服务端程序: import tornado.web import os IMG_LIST=[] class IndexHandler(tornado.web.RequestHandler): def ...
- SpringMVC实现多文件(批量)上传
1.springMVC实现多文件上传需要的包如图2.webroot下的结构如图所示 3.java代码: package cn.lxc.controller; import java.io.File; ...
- java:工具(汉语转拼音,压缩包,EXCEL,JFrame窗口和文件选择器,SFTP上传下载,FTP工具类,SSH)
1.汉语转拼音: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuP ...
- SpringMVC中对多部件类型解析---文件(图片)上传
加入上传图片jar包 commons-io-2.4.jar commons-fileupload-1.3.jar 在页面form中提交enctype="multipart/form-data ...
- 【docker】将Java jar文件生成镜像、上传镜像并生成镜像压缩文件
概述 将Springboot的web服务打包成Jar包后,自动化脚本将jar打包成镜像.上传镜像.并生成镜像的压缩文件: Dockerfile FROM 10.254.9.21/library/ora ...
随机推荐
- CentOS7使用打开关闭防火墙与端口
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体. 启动一个服务:systemctl start firewalld.servic ...
- Tomcat:Several ports are already in use问题
Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The ...
- SQL Server 中关于EXCEPT和INTERSECT的用法
熟练使用SQL Server中的各种用法会给查询带来很多方便.今天就介绍一下EXCEPT和INTERSECT.注意此语法仅在SQL Server 2005及以上版本支持. EXCEPT是指在第一个集合 ...
- smarty学习——高级知识
1.Objects 对象 smarty允许通过模板访问PHP对象.有两种方式来访问它们.一种是注册对象到模板,然后通过类似于用户自定义函数的形式来访问它. 另一种方法给模板分配对象,然后通过访问其它赋 ...
- Android已有的原生Camera框架中加入自己的API的实现方案。
版权声明:本文为CSDN博主(天才2012)原创文章.未经博主同意不得转载. https://blog.csdn.net/gzzaigcn/article/details/25707389 在 ...
- RAC4——架构和变化
1.RAC的架构 2.由单实例变RAC的变化 1.SGA的变化: 和传统的单实例相比,RAC 实例中SGA最显著的变化时多了一个GRD(Global resource directory)部分. ...
- Apache Spark 内存管理详解
在spark里面,内存管理有两块组成,一部分是JVM的堆内内存(on-heap memory),这部分内存是通过spark dirver参数executor-memory以及spark.executo ...
- Visual Studio2010不能安装Silverlight4_Tools,提示语言不一致
天在装Silverlight4_Tools时出现“必须先安装与 Silverlight Tools 4 语言版本相一致的 Visual Studio 2010.Visual Web Developer ...
- [C++ Primer] : 第15章: 面向对象程序设计
OOP: 概述 面向对象程序设计的核心思想是数据抽象, 继承和动态绑定. 通过数据抽象, 我们可以实现类的接口与实现的分离; 使用继承, 可以定义相似的类型并对其相似关系建模; 使用动态绑定, 可以在 ...
- JavaScript模块化-RequireJs实现AMD规范的简单例子
AMD规范简介 AMD(异步模块定义),是实现JavaScript模块化规范之一,它采用异步方式加载模块,模块的加载不影响后面语句的运行.require.js和curl.js都是实现AMD规范的优秀加 ...