spring mvc 文件上传+本地预览+一次提交
2015-09-17 23:54
671 查看
转自 http://wdhdmx.iteye.com/blog/1092792
参考:http://club.jledu.gov.cn/?uid-5282-action-viewspace-itemid-188672
加上传功能,不影响原来数据和对象的获取。
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 以字节为单位的最大上传文件的大小 -->
<property name="maxUploadSize" value="1000000" />
</bean>
com.springsource.org.apache.commons.fileupload-1.2.2.jar
<input name="file" type="file" >
<input type="submit">
</form>
form中依然可以写其他的文本框,单选框,下拉框,等等,后台依旧能同时获取
Java代码
@RequestMapping(value="/upload")
public String update(DefaultMultipartHttpServletRequest request){
CommonsMultipartFile file = (CommonsMultipartFile) request.getFile("file");
//这里的file就是前台页面的name
if(file.isEmpty()){
return null;
}
//获取路径,生成完整的文件路径,当然要先<span style="color: #ff0000;">创建upload文件夹</span>
了。
String fileName = request.getRealPath("upload")+File.separator+System.currentTimeMillis()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
File uploadFile = new File(fileName);
try {
//上传
FileCopyUtils.copy(file.getBytes(), uploadFile);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Html代码
<script type="text/javascript">
function changePicUrl(){
var dFile = document.getElementById('file');
var dImg = document.getElementById('pic');
if(dFile.files){
dImg.src = dFile.files[0].getAsDataURL();//这里不懂??
}else
if(dFile.value.indexOf('\\') > -1 || dFile.value.indexOf('\/') > -1){
dImg.src = dFile.value;
}
}
</script>
<form action="head/upload.html" method="post" enctype="multipart/form-data">
上传文件<input name="file" type="file" onchange="changePicUrl()">
<img name="pic" id="pic" alt="" src="">
<input type="submit">
</form>
参考:http://club.jledu.gov.cn/?uid-5282-action-viewspace-itemid-188672
加上传功能,不影响原来数据和对象的获取。
1.修改spring mvc的配置文件,我的是webmvc-config.xml。加入
Xml代码<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 以字节为单位的最大上传文件的大小 -->
<property name="maxUploadSize" value="1000000" />
</bean>
2.加入两个依赖的jar包(spring官网可以下载到对应版本的常用依赖jar包):
com.springsource.org.apache.commons.io-1.4.0.jarcom.springsource.org.apache.commons.fileupload-1.2.2.jar
3.页面中的值。注意表单的file的name为"file"
<form action="upload.do" method="post" enctype="multipart/form-data"><input name="file" type="file" >
<input type="submit">
</form>
form中依然可以写其他的文本框,单选框,下拉框,等等,后台依旧能同时获取
4.在后台的Controller层的upload方法中的HttpServletRequest request 改变为 DefaultMultipartHttpServletRequest request
完整的后台代码Java代码
@RequestMapping(value="/upload")
public String update(DefaultMultipartHttpServletRequest request){
CommonsMultipartFile file = (CommonsMultipartFile) request.getFile("file");
//这里的file就是前台页面的name
if(file.isEmpty()){
return null;
}
//获取路径,生成完整的文件路径,当然要先<span style="color: #ff0000;">创建upload文件夹</span>
了。
String fileName = request.getRealPath("upload")+File.separator+System.currentTimeMillis()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
File uploadFile = new File(fileName);
try {
//上传
FileCopyUtils.copy(file.getBytes(), uploadFile);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
5.页面加预览
页面的详细代码,加本地预览(火狐能用,IE9不能)Html代码
<script type="text/javascript">
function changePicUrl(){
var dFile = document.getElementById('file');
var dImg = document.getElementById('pic');
if(dFile.files){
dImg.src = dFile.files[0].getAsDataURL();//这里不懂??
}else
if(dFile.value.indexOf('\\') > -1 || dFile.value.indexOf('\/') > -1){
dImg.src = dFile.value;
}
}
</script>
<form action="head/upload.html" method="post" enctype="multipart/form-data">
上传文件<input name="file" type="file" onchange="changePicUrl()">
<img name="pic" id="pic" alt="" src="">
<input type="submit">
</form>
相关文章推荐
- useBean javaBean 的应用案例
- java---杂七杂八的备忘录
- JAVA基础之内部类
- Spring 事务
- Java多线程--安全问题
- java正则表达式
- lombok简介及使用方法
- Think in Java 实例变量的初始化
- Think in Java IO流的 字节流部分
- Think in Java 笔记_Chapter12_1_Exception基础_继承和RuntimeException处理1
- Think in Java 笔记_Chapter12_1_Exception基础_异常处理2
- Think in Java 笔记_Chapter12_1_Exception基础_异常处理3_自定义异常以及抛出多个异常的处理
- Think in Java 笔记_Chapter20_1_Annocation基础语法
- Think in Java 笔记_Chapter20_2_Annocation和Junit
- java基础_String类型和char类型、自动类型提升和强制类型转换
- JVM学习04_java中的堆、栈和常量池[看到一篇好文章,加自己想法]
- 10个实用的但偏执的Java编程技术
- Java 里把 InputStream 转换成 String 的几种方法
- Java记录 -35- System类解析
- java 编程思想 阅读笔记(5)