SpringMVC中配置
<!-- SpringMVC的上传组件 SpringMVC内部使用拦截机制,当前客户端发送请求含有上传部分内容,SpringMVC自动启动一个上传的组件,但是该组件必须声明的标识是multipartFile -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
maven工程中pom文件中配置
<!-- springmvc的上传功能 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Controller代码
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@Controller
public class UploadController {
@RequestMapping("/upload")
public @ResponseBody String uploadCouponPractice(MultipartHttpServletRequest request){
MultipartFile file = request.getFile("file");
String fileName = file.getOriginalFilename();
UUID uuid = UUID.randomUUID();
String newFileName = uuid+fileName;
String savePath = request.getServletContext().getRealPath("");
savePath = savePath + "/upload/";
File filePath = new File(savePath);
if(!filePath.exists()){
filePath.mkdir();
}
try {
InputStream in = file.getInputStream();
byte buffer[] = new byte[1024];
OutputStream out = new FileOutputStream(savePath+newFileName);
int len = 0;
while((len = in.read(buffer)) != -1){
out.write(buffer, 0, len);
}
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return newFileName;//返回新文件名
}
前台form表单
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>