有时候,最美的惊喜并不是得到,而是学会付出。——《 安娜和她的云 》
最近放慢了写作的速度,是因为我慢慢觉得有些东西还是沉淀一段时间后才会更有价值。
我们先来看看使用SPRing MVC实现文件上传所需要的jar包
?| 12345678910 | <dependency>    <groupId>commons-fileupload</groupId>    <artifactId>commons-fileupload</artifactId>    <version>1.3.1</version></dependency><dependency>    <groupId>commons-io</groupId>    <artifactId>commons-io</artifactId>    <version>2.4</version></dependency> | 
这里只列出了上传下载所需要的jar包,使用Spring MVC框架的jar包我在上一篇文章已经写过了,如果还没看的请点击链接springmvc创建web项目基础之二-spring-mvc与mybatis整合详解先去看我的上一篇文章。
一、前端页面实现
前端页面很简单,样子如下:

<div class="col-lg-12" style="margin-top: 10px"> <form id="upLoad_form" method="post" enctype="multipart/form-data"> <input type="file" id="picture" name="file"> <button type="button" id="upload_btn" class="btn btn-primary" >上传图片</button> </form> </div>?二、后端实现
1.控制器BookShopController
在这个项目里简单实现一个上传图片的功能。
?
@Resource	private BookShopService mService;/**     * 上传图片     *      * @param MultipartFile file 页面选中的文件     * @param HttpServletRequest request 请求     * @param HttpServletResponse response 响应     *      */    @RequestMapping(value = "/upload", method = RequestMethod.POST)      @ResponseBody    public void upload(@RequestParam("file") MultipartFile file,HttpServletRequest request, HttpServletResponse response) {      	    	try {    				mService.uploadFile(file,request,response);		} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		    }   | 
2.服务接口BookShopService
public interface BookShopService {public void uploadFile(MultipartFile file,HttpServletRequest request, HttpServletResponse response) throws Exception;}?3.服务接口的实现类BookShopServiceImpl
@Servicepublic class BookShopServiceImpl implements BookShopService {@Override	public void uploadFile(MultipartFile file,HttpServletRequest request, HttpServletResponse response) throws Exception {BookShopUploadUtil.fileUp(file,request,response);	}}?4.上传文件工具类BookShopUploadUtil
这个是实现上传文件的核心实现
public class BookShopUploadUtil {	/**     * 上传图片     */    public static void fileUp(MultipartFile file,HttpServletRequest request,            HttpServletResponse response) throws Exception {    	 String path="";//保存图片路径    	 String filePath = Consts.CONTEXTPATH;//显示图片路径(相对路径)    	 try {             if (!file.isEmpty()){                              //得到服务器中保存文件的绝对路径             path = request.getServletContext().getRealPath(Consts.SAVE_PATH + "/");                 //新建文件夹            	 newFolder(path);            	 //新建文件夹完成后将路径添加文件名            	 path += file.getOriginalFilename();            	 //页面显示图片的相对路径            	 filePath += "/" + Consts.SAVE_PATH +  "/" + file.getOriginalFilename();            	 //使用StreamsAPI方式拷贝文件             Streams.copy(file.getInputStream(),new FileOutputStream(path),true);             //将上面得到的图片相对路径返回给页面         	 JSONObject json = new JSONObject();             json.accumulate(Consts.SRC, filePath); 			 json.accumulate("error", false); 	         json.accumulate("message", "上传成功!"); 	         PrintWriter out = response.getWriter(); 	         out.print(json.toString()); 	         out.flush(); 	         out.close();             }         } catch (Exception e) {             System.out.println("文件上传失败");             e.printStackTrace();             path="";         }    }	/**     * 创建文件夹     *      * @param folderPath     */    public static void newFolder(String folderPath) {        try {            File myFilePath = new File(folderPath);            if (!myFilePath.exists()) {            	//创建多级文件夹                myFilePath.mkdirs();                System.out.println("创建文件夹路径:" + folderPath);            }        } catch (Exception e) {            System.out.println("新建文件夹操作出错");            e.printStackTrace();        }    }}?Consts.SAVE_PATH是一个字符串常量,表示存放路径
public class Consts {public final static String SAVE_PATH = "resources/bookshopupload/savefile/";  }?至此实现就完成了,效果如下

如果你喜欢我的文章请扫描主页的微信公众号二维码,每天都有新推文。
如果你喜欢我的文章请收藏我的个人网站:http://www.bubblyyi.com
新闻热点
疑难解答