springMVC的文件上传和基于ajax的文件上传(学习记录)

来源:互联网 发布:园艺专业就业相关数据 编辑:程序博客网 时间:2024/04/25 09:44

学习记录::

jsp页面: load.jsp 

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="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">  <script type="text/javascript" src="../js/jquery-1.4.4.min.js" ></script>  <script type="text/javascript" src="../js/jquery.form.js" ></script>  <script type="text/javascript">  var options = {                     //target:        '#output2',   // target element(s) to be updated with server response                    beforeSubmit:  showRequest,  // pre-submit callback                    success:      function(response){                                        } ,  // post-submit callback                     // other available options:                     url:       "/SpringTest/jsp/ajaxUploadTest.do",        // override for form's 'action' attribute                    type:      "post"        // 'get' or 'post', override for form's 'method' attribute                    //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)                     //clearForm: true        // clear all form fields after successful submit                     //resetForm: true        // reset the form after successful submit                      // $.ajax options can be used here too, for example:                     //timeout:   3000                 };         function showRequest() {              alert("before submit");              return true;//返回true才可以进行下一步         }                 // post-submit callback        function showResponse(response) {             alert("submit success"+response);        }  $(document).ready(function(){  $("#formTest").submit(function(){  options.success=function(response){  showResponse(response);  };  options.beforeSubmit=showRequest;  $(this).ajaxSubmit(options);  return false;  });  });  </script><title>Insert title here</title></head><body><form action="testUpload1.do" enctype="multipart/form-data" method="post"><input type="file" name="file" /><input type="file" name="file" /><input type="submit" value="上传1"/></form><p/><form action="testUpload2.do" enctype="multipart/form-data" method="post"><input type="file"  name="file" /><input type="submit" value="上传2"/></form><p/><form action="testUpload3.do" enctype="multipart/form-data" method="post"><input type="file"  name="file" /><input type="submit" value="上传3"/></form><br/>-------------------------------------------------------------------<br/>基于ajax的文件上传<br/><form id="formTest" enctype="multipart/form-data"><input type="file" name="file"/><input type="submit" value="基于ajax的上传"/></form></body></html>

package com;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;import org.springframework.web.multipart.MultipartHttpServletRequest;@Controllerpublic class FileUploadController {/****多文件上传***/@RequestMapping(value="/jsp/testUpload1")@ResponseBodypublic boolean testUpload1(@RequestParam MultipartFile[] file){for(MultipartFile f:file){System.out.println(f.getOriginalFilename());}return true;}/***单文件上传**/@RequestMapping(value="/jsp/testUpload2")@ResponseBodypublic boolean testUpload2(@RequestParam MultipartFile file,HttpServletRequest req) throws IOException{InputStream is = file.getInputStream();String uploadFilePath=req.getSession().getServletContext().getRealPath("/")+"upload/";String filename = file.getOriginalFilename();//File tempfile=new File(uploadFilePath+filename);FileOutputStream fos=new FileOutputStream(uploadFilePath+filename);byte[] b=new byte[8192];int count =0;while((count=is.read(b))>0){fos.write(b,0,count);}fos.close();is.close();return true;}/***基于ajax的单文件上传**/@RequestMapping(value="/jsp/ajaxUploadTest")@ResponseBodypublic boolean ajaxUploadTest(@RequestParam MultipartFile file,HttpServletRequest req) throws IOException{InputStream is = file.getInputStream();String uploadFilePath=req.getSession().getServletContext().getRealPath("/")+"upload/";String filename = file.getOriginalFilename();//File tempfile=new File(uploadFilePath+filename);FileOutputStream fos=new FileOutputStream(uploadFilePath+filename);byte[] b=new byte[8192];int count =0;while((count=is.read(b))>0){fos.write(b,0,count);}fos.close();is.close();return true;}@RequestMapping(value="/jsp/testUpload3")@ResponseBodypublic boolean testUpload3(HttpServletRequest req,HttpServletResponse res){MultipartHttpServletRequest multi=(MultipartHttpServletRequest)req; MultipartFile file = multi.getFile("file");  System.out.println(req.getSession().getServletContext().getRealPath("/")+"upload/");return true;}}

关于ajax的文件上传是基于jquery.form.js的,起到页面无刷新的上传。

关于多文件上传,测试没有成功,以后会补上。







0 0