springmvc环境下使用ajaxfileupload.js进行文件上传
controller:
/* #region */ @RequestMapping(produces = "text/html;charset=UTF-8", value = "/unisi-plugins-core-files/component-async/upload")
@ResponseBody
public String upload(@RequestParam("uname") String uname, @RequestParam MultipartFile[] image_file,
HttpServletRequest request, HttpServletResponse response) throws IOException {
// 可以在上传文件的同时接收其它参数
com.unisi.framework.core.utilities.ConsoleHelper.printOut("收到用户的文件上传请求");
// 如果用的是Tomcat服务器,则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\upload\\文件夹中
// 这里实现文件上传操作用的是commons.io.FileUtils类,它会自动判断/upload是否存在,不存在会自动创建
String realPath = request.getSession().getServletContext().getRealPath("/upload");
// 设置响应给前台内容的数据格式
response.setContentType("text/plain; charset=UTF-8");
// 设置响应给前台内容的PrintWriter对象
PrintWriter out = response.getWriter();
// 上传文件的原名(即上传前的文件名字)
String originalFilename = null;
// 如果只是上传一个文件,则只需要MultipartFile类型接收文件即可,而且无需显式指定@RequestParam注解
// 如果想上传多个文件,那么这里就要用MultipartFile[]类型来接收文件,并且要指定@RequestParam注解
// 上传多个文件时,前台表单中的所有<input
// type="file"/>的name都应该是image_file,否则参数里的image_file无法获取到所有上传的文件
for (MultipartFile myfile : image_file) {
if (myfile.isEmpty()) {
out.print("1`请选择文件后上传");
out.flush();
return null;
} else {
originalFilename = myfile.getOriginalFilename();
com.unisi.framework.core.utilities.ConsoleHelper.printOut("文件原名: " + originalFilename);
com.unisi.framework.core.utilities.ConsoleHelper.printOut("文件名称: " + myfile.getName());
com.unisi.framework.core.utilities.ConsoleHelper.printOut("文件长度: " + myfile.getSize());
com.unisi.framework.core.utilities.ConsoleHelper.printOut("文件类型: " + myfile.getContentType());
try {
// 这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉
// 此处也可以使用Spring提供的MultipartFile.transferTo(File
// dest)方法实现文件的上传
FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(realPath, originalFilename));
} catch (IOException e) {
com.unisi.framework.core.utilities.ConsoleHelper
.printOut("文件[" + originalFilename + "]上传失败,堆栈轨迹如下");
e.printStackTrace();
out.print("1`文件上传失败,请重试!");
out.flush();
return null;
}
}
}
// 此时在Windows下输出的是[D:\Develop\apache-tomcat-6.0.36\webapps\AjaxFileUpload\\upload\愤怒的小鸟.jpg]
// System.out.println(realPath + "\\" + originalFilename);
// 此时在Windows下输出的是[/AjaxFileUpload/upload/愤怒的小鸟.jpg]
// System.out.println(request.getContextPath() + "/upload/" +
// originalFilename);
// 不推荐返回[realPath + "\\" + originalFilename]的值
// 因为在Windows下<img src="file:///D:/aa.jpg">能被firefox显示,而<img
// src="D:/aa.jpg">firefox是不认的
out.print("0`" + request.getContextPath() + "/upload/" + originalFilename);
out.flush();
return null;
}
/* #endregion */
springmvc配置文件:
<!-- region upload config -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760" />
</bean>
<!-- endregion spring -->
前台:
<script type="text/javascript">
function ajaxFileUpload(){
//执行上传文件操作的函数
$.ajaxFileUpload({
//处理文件上传操作的服务器端地址(可以传参数,已亲测可用)
url:'地址?uname=玄玉',
secureuri:false, //是否启用安全提交,默认为false
fileElementId:'image_file', //文件选择框的id属性
dataType:'text', //服务器返回的格式,可以是json或xml等
success:function(data, status){ //服务器响应成功时的处理函数
alert(111);
},
error:function(data, status, e){ //服务器响应失败时的处理函数
alert(222);
}
});
}
</script> <input type="file" name="image_file" id="image_file" />
<input value="Upload" type="button" id="upload-form" name="upload-form" onclick="ajaxFileUpload()"/>
当然,除以上配置代码外要引用ajaxfileupload.js。如果还有问题可以留言给我。
springmvc环境下使用ajaxfileupload.js进行文件上传的更多相关文章
- Windows环境下用C#编程将文件上传至阿里云OSS笔记
Windows环境下用C#编程将文件上传至阿里云OSS笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/detai ...
- 使用ajaxfileupload.js实现文件上传
ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options]) options参数说明: 1.url 上传处理程序地址. 2,file ...
- jQuery插件AjaxFileUpload实现ajax文件上传
转自:http://www.cnblogs.com/linjiqin/p/3530848.html jQuery插件AjaxFileUpload用来实现ajax文件上传,该插件使用非常简单,接下来写个 ...
- ajaxFileUpload+struts2多文件上传(动态添加文件上传框)
上一篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但仅仅是固定的文件个数 ...
- jQuery插件AjaxFileUpload实现ajax文件上传时老是运行error方法 问题原因
今天在用jQuery插件AjaxFileUpload实现ajax文件上传时,遇到一个问题,如图: 老是运行error.无法运行succes方法,追踪ajaxfileupload.js源代码发现: wa ...
- js获取文件上传进度
js获取文件上传进度: <input name="file" id="FileUpload" type="file" /> &l ...
- ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)
在写这篇的时候本来想把标题直接写成报错的提示,如下: “SecurityError:Blocked a frame with origin "http://localhost:55080&q ...
- SpringMVC第五篇【方法返回值、数据回显、idea下配置虚拟目录、文件上传】
Controller方法返回值 Controller方法的返回值其实就几种类型,我们来总结一下-. void String ModelAndView redirect重定向 forward转发 数据回 ...
- 十九、多文件上传(ajaxFileupload实现多文件上传功能)
来源于https://www.jb51.net/article/128647.htm 打开google 搜索"ajaxFileupload' ‘多文件上传"可以搜到许许多多类似的, ...
随机推荐
- eclipse code style template
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templa ...
- margin重叠
margin重叠也就是我们常说的CSS 外边距合并,W3C给出如下定义: 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 ...
- 【算法系列学习】状压dp [kuangbin带你飞]专题十二 基础DP1 D - Doing Homework
https://vjudge.net/contest/68966#problem/D http://blog.csdn.net/u010489389/article/details/19218795 ...
- Linux中批量添加文件和修改文件小笔记
1.#使用通配符批量创建5个文件 $ touch file{1..10}.txt 2.#批量修改这五个后缀名为.txt的文本文件名重命名为.c后缀名结尾的文件 $ rename 's/\.txt/\. ...
- 前端开发需要了解的JS插件
excanvas.js/Chart.js/cubism.js/d3.js/dc.js/dx.chartjs.js/echarts.js/flot.js 用途:构建数据统计图表,兼容多浏览器 jquer ...
- 学习笔记:javascript内置对象:字符串对象
1.字符串的创建 var str = "Hello Microsoft!"; 2.字符串属性 constructor 返回创建字符串属性的函数 length ...
- linux下percona-toolkit工具包的安装和使用(超详细版)
一.检查和安装与Perl相关的模块 PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境. 依赖包检查命令为: rpm -qa perl-DBI perl-DBD-MySQL perl ...
- Jquery ajaxSubmit()的浏览器兼容问题
form.ajaxSubmit({ 2 beforeSubmit: function() { 3 if (FinanceUtil.validate(form)) { 4 FinanceUtil.loa ...
- Vulkan Tutorial 开发环境搭建之Windows
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 相信很多人在开始学习Vulkan开发的起始阶段都会在开发环境的配置上下一些功夫,那么 ...
- Hibernate中遇到的一个Exception
做项目的时候遇到一个很头疼的报错:Illegal attempt to associate a collection with two opensessions 出错原因: 一个Object Ver ...