Spring实现文件上传
来源:互联网 发布:java中四舍五入的方法 编辑:程序博客网 时间:2024/05/21 05:56
Spring在使用文件上传需要在SpringMVC-servlet.xml中配置:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size100MB -->
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
我们首先实现跳转方式的文件上传
实例: *.jsp
<form action="fileUpload" method="post" enctype="multipart/form-data">
img:<input type="file" name="img" /><br/>
<input type="submit" value="上传" />
</form>
fileUploadController.java
package controller;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
@Controller
public class FileUploadController {
@RequestMapping("/fileUpload")
public String fileUpload(HttpServletRequest request,@RequestParam("img")MultipartFile file) throws IOException
{
//如果在这里要实现多文件上传 ,就可以这样注解 :@RequestParam("img") List<MultipartFile> list, 那么在前端就有多个name为“img” 的file
@SuppressWarnings("deprecation")
String path=request.getRealPath("file");
InputStream is=file.getInputStream();
OutputStream os=new FileOutputStream(new File(path,file.getOriginalFilename()));
byte[] buffer=new byte[400];
int length=0;
while(-1!=(length=is.read(buffer)))
{
os.write(buffer);
System.out.println(buffer+"----------------");
}
is.close();
os.close();
return "fileOk";
}
}
2 . 使用$.ajaxFileUpload实现不跳转页面的文件上传
此时,我们需要使用jquery.js和ajaxfileupload.js两个文件
实例:
<script type="text/javascript" src="source/jquery.js"></script>
<script type="text/javascript" src="source/ajaxfileupload.js"></script>
<script type="text/javascript">
function fileUpload() {
$.ajaxFileUpload({
url:"ajaxfileUpload",
secureuri:false,
type:"POST",
fileElementId:"file",
dataType:"json",
success:function(data)
{
alert(data.result);
},
error:function()
{
alert("上传失败");
}
});
return false;
}
</script>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file"/><br/>
<input type="button" value="upload" onclick="return fileUpload();"/>
</form>
</body>
在这里需要注意,我们使用两个静态的外部资源文件 ,就需要在SpringMVC-Servlet.xml 中配置
<mvc:resources location="/source/*" mapping="/source/**"/>
AjaxFileUploadController.java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class AjaxFileUpload {
//@ResponseBody
@RequestMapping(value="/ajaxfileUpload")
public String fileUpload(@RequestParam("file") MultipartFile file,HttpServletRequest req,HttpServletResponse resp) throws IOException
{
System.out.println("-----------------");
System.out.println(file.getOriginalFilename());
InputStream is=null;
FileOutputStream os=null;
try {
is=file.getInputStream();
String path=req.getSession().getServletContext().getRealPath("file");
os=new FileOutputStream(new File(path,file.getOriginalFilename()));
byte[] buffer=new byte[400];
int length=0;
while(-1!=(length=is.read(buffer)))
{
os.write(buffer);
System.out.println(new String(buffer));
}
} catch (IOException e) {
e.printStackTrace();
}
is.close();
os.close();
resp.getWriter().println("{\"result\":\"fileUploadOk\"}");
return null;
// return "{\"result\":\"fileUploadOk\"}";
}
}
我们从以上两个实例看出在接受文件时,使用的时MultipartFile直接来接受,其实我们还可以使用MultipartHttpServletRequest来处理,通过将HttpServletRequest来cast to MultipartHttpServetRequest
即:HttpServletRequest request=.....
MultipartHttpServletRequest mhr=(MultipartHttpServletRequest)request;
然后使用: mhr.getFile() 获得MultipartFile
mhr.getFiles()获得List<MultipartFile>
- spring实现文件上传
- Spring实现文件上传
- Spring实现文件上传
- spring实现文件上传
- spring实现上传文件
- spring实现文件上传
- 用spring实现文件上传
- Spring MVC 实现文件上传
- spring MVC实现文件上传
- Spring MVC实现文件上传
- Spring中实现文件上传
- Spring中实现文件上传
- spring 文件上传功能实现
- Spring mvc实现文件上传
- spring springmvc实现文件上传
- Spring mvc 实现文件上传
- Spring+Springmvc实现文件上传
- Spring Boot实现文件上传
- 观察者模式
- hdu1010
- sqlalchemy系列(2) orm相关简易操作
- 黑马程序员—C语言笔记—函数
- 常用排序代码
- Spring实现文件上传
- 自定义dialog
- SSH中用到的设计模式之三——工厂方法和抽象工厂
- C++Primer学习笔记(代码重用)
- 填充算法(二)优化递归填充算法
- apache配置虚拟主机
- hdu5094 状压+bfs
- css学习,控制列表章节
- priority_queue<int,vector<int>,greater<int>>优先队列 按照由小到大顺序