jquery easy UI + Spring MVC(注解) 完成文件上传操作

本文介绍了一个基于SpringMVC框架的文件上传示例,包括前端页面的搭建及后端控制器的实现,展示了如何使用MultipartFile[]接收多个文件并进行上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从网上查了很多资料,发现全部是要么 是直接表单上传,要么就不支持注解形式。所以自己弄了一份这个实例,做个记录,也希望帮到同样需求的人。

前提,项目已经配置好SpringMVC注解的框架

jsp页面

<head>
<meta charset="UTF-8">
<title>部署管理</title>
<link rel="stylesheet" type="text/css" href="../../jquery-easyui-1.4.5/themes/default/easyui.css" />
<link rel="stylesheet" type="text/css" href="../../jquery-easyui-1.4.5/themes/icon.css" />
<link rel="stylesheet" type="text/css" href="../../jquery-easyui-1.4.5/demo/demo.css" />

<script type="text/javascript" src="../../jquery-easyui-1.4.5/jquery.min.js"></script>
<script type="text/javascript" src="../../jquery-easyui-1.4.5/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery-easyui-1.4.5/ajaxfileupload.js"></script>
</head>


<script type="text/javascript">
//部署
function deploy(){
$("#deployForm").form('submit',{
success: function(result){
if(result){
alert(result);
}
}
});
}

</script>

<form id="deployForm" action="${pageContext.request.contextPath}/deploy/deploy.do" method="post"
       enctype="multipart/form-data">
用户名: <input id="userID" class="easyui-textbox" style="width:80px" name = "name" value="孙浩">    
   <input id="deployFileIPT" name="myfiles" class="easyui-filebox" style="width:300px;" οnclick="mc()"/>

            <a href="#" οnclick="deploy()" class="easyui-linkbutton" iconCls="icon-add">部署</a>
</form>

后台  

@Controller
@RequestMapping("/deploy")
public class DeployController {


/**
* 这里这里用的是MultipartFile[] myfiles参数,所以前台就要用<input type="file" name="myfiles"/>
* 上传文件完毕后返回给前台[0`filepath],0表示上传成功(后跟上传后的文件路径),1表示失败(后跟失败描述)
*/
@RequestMapping("/deploy")
public String deploy(@RequestParam String name,@RequestParam MultipartFile[] myfiles,HttpServletRequest request,
HttpServletResponse response) throws IOException {
System.out.println("部署!!"+name);

//如果用的是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注解
for(MultipartFile myfile : myfiles){
if(myfile.isEmpty()){
out.print("1`请选择文件后上传");
out.flush();
return null;
}else{
originalFilename = myfile.getOriginalFilename();
System.out.println("文件原名: " + originalFilename);
System.out.println("文件名称: " + myfile.getName());
System.out.println("文件长度: " + myfile.getSize());
System.out.println("文件类型: " + myfile.getContentType());
System.out.println("========================================");
try {
//这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉
//此处也可以使用Spring提供的MultipartFile.transferTo(File dest)方法实现文件的上传
FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(realPath, originalFilename));
} catch (IOException e) {
System.out.println("文件[" + originalFilename + "]上传失败,堆栈轨迹如下");
e.printStackTrace();
out.print("1`文件上传失败,请重试!!");
out.flush();
return null;
}
}
}
// try {
// //这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉
// //此处也可以使用Spring提供的MultipartFile.transferTo(File dest)方法实现文件的上传
// FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(realPath, originalFilename));
// } catch (IOException e) {
// System.out.println("文件[" + 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;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值