首页
移动开发
物联网
服务端
编程语言
企业开发
数据库
业界资讯
其他
搜索
java中的文件上傳
企业开发
2018-05-10 06:31:04
阅读次数: 2
[Java]
Spring2文件上传实例
[复制链接]
李凯
项目结构视图:
web.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>spring-action</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-action</servlet-name>
<url-pattern>*.mhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>testuploadfile.jsp</welcome-file>
</welcome-file-list>
</web-app>
复制代码
spring-action-servlet.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!--
使用Spring已集成的Commons FileUpload上传组件。
1.为了让DispatcherServlet处理MultipartRequest,
在Spring配置文件中声明一个MultipartResolver。
这样一旦某个Request是一个MultipartRequest,
它就会首先被MultipartResolver处理,然后再转发到相应的Controller。
-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size10MB -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
</bean>
复制代码
<!--
2.配置一个Controller,来处理上传的文件。
-->
<bean name="fileUploadController" autowire-candidate="false"
class="test.web.controller.uploadfile.FileUploadController">
<property name="commandClass" value="java.lang.Object" />
<!-- 上传失败时跳转页面 -->
<property name="formView" value="/user/err.jsp" />
<!-- 上传成功时跳转页面 -->
<property name="successView"
value="redirect:/testuploadfile.jsp" />
<property name="uploadDir" value="c:/testUploadFile/" />
</bean>
复制代码
<!--
3.配置一个URL映射控制器,直接将URL映射到相应的控制器处理。
-->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/testuploadfile.mhtml">
fileUploadController
</prop>
</props>
</property>
</bean>
复制代码
<!--
4.配置一个视图解析器,将逻辑视图名解析为一个用模板文件(如JSP或Velocity模板)渲染的视图对象。
-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="requestContextAttribute" value="rc" />
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
复制代码
FileUploadController.java文件内容:
package test.web.controller.uploadfile;
import java.io.File;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class FileUploadController extends SimpleFormController {
private String uploadDir;//上传文件路径
public void setUploadDir(String uploadDir) {
this.uploadDir = uploadDir;
}
public String getUploadDir() {
return this.uploadDir;
}
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object cmd, BindException errors)
throws Exception {
uploadFile(request);
return new ModelAndView(getSuccessView());
}
private void uploadFile(HttpServletRequest request) {
// 转型为MultipartHttpRequest:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 遍历所有文件域,获得上传的文件
for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
String key = (String) it.next();
MultipartFile file = multipartRequest.getFile(key);
saveFile(file);
}
}
private void saveFile(MultipartFile file) {
if (file == null || file.isEmpty())
return;
String filename = file.getOriginalFilename();
String localfileName = uploadDir + filename;
// 写入文件
File source = new File(localfileName.toString());
try {
file.transferTo(source);
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制代码
testuploadfile.jsp文件内容:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
.addAttachFileUrl{
position: relative;
font-size: 12px;
}
.file {
position: absolute;
width: 1px;
left: -3px;
filter: Alpha(opacity=0);
cursor: hand;
top: -3px;
}
.filelistItem {
display: block;
background: #ffffcc;
font: "宋体";
font-size: 12px;
}
</style>
<script type="text/javascript">
var i=1;
//文件上传
var attachname = "attach_";
function addFile(obj){
if(obj.value.length>0){
var fileNewInput = document.createElement("<input type='file' name='"+
attachname + i + "' class='file' onchange='addFile(this)'/>");
var fileName = document.createElement("span");
fileName.className = "filelistItem";
fileName.innerHTML = obj.value+
" <a href='javascript:void(0)' onclick='delFile(this)'>删除</a>";
fileName.appendChild(obj);
document.getElementById("filelist").appendChild(fileName);
document.getElementById("filebutton").appendChild(fileNewInput)
obj.style.display="none";
i = i + 1;
}
}
function delFile(obj){
document.getElementById("filelist").removeChild(obj.parentNode)
}
</script>
</head>
<body>
<FORM id="myForm" method="POST" enctype="multipart/form-data"
action="testuploadfile.mhtml">
上传附件:
<div id="filelist"></div>
<br />
<a class="addAttachFileUrl" href="javascript:void(0)" id="filebutton">点击添加附件
<input type="file" name="file_0" class="file"
onchange="addFile(this)" /> </a>
<br />
<input type="submit" value="提交">
</FORM>
</body>
</html>
复制代码
猜你喜欢
转载自
jin-deng.iteye.com/blog/1622262
java中的文件上傳
form表單上傳文件并返回上傳結果
Extjs Struts2文件上傳
uploadifive上傳插件的使用
AS上傳代碼到GitLab
在Web Service中傳送Dictionary
Wavemaker和 apache cordova混合开发之圖片上傳
臉書、魔獸傳後代 線上保險箱搞定
IIS7 上傳時出現'ASP 0104 : 80004005'錯誤
HttpWebRequest 實現多文件和多參數傳送
[SV]SystemVerilog中的傳參數給帶時延task
java文件上上传与下载
王者傳奇
Android 傳值
在java程序中调用 .sh文件上,以相对路径
java中静态方法上
Java中JNI的使用(上)
Java 中多态的实现(上)
Java中的多线程(上)
读取hdfs上指定文件中的内容
在spark udf中读取hdfs上的文件
Java Class文件结构实例分析(上)
linux上编译并运行单个java文件
Java读取FTP上TXT文件内容
java 读取hdfs上的文件内容
JAVA中的文件与IO
java中的jar文件
java中的文件复制
Java中的文件流
java中的文件操作
今日推荐
周排行
django中south支持多数据库
2、实时同步项目
http协议状态码解析
codeup 又一版 A+B(C++)
js三座大山之外的其他知识点
正向代理VS反向代理 总结
规范的测试流程 (转自51testing)
3、python-连接sql server
转~Jenkins pipeline:pipeline 使用之语法详解
cookie与sessio系列(一):基本知识入门
每日归档
更多
2024-06-11(0)
2024-06-10(0)
2024-06-09(0)
2024-06-08(0)
2024-06-07(0)
2024-06-06(0)
2024-06-05(0)
2024-06-04(10)
2024-06-03(52)
2024-06-02(4)