java Web 文件上传

java

注意:请求实体过大的问题,请修改Nginx服务器的大小(百度参考413 Request Entity Too Large 的解决方法)
jsp:<input type="file"  style="height: 114px;width: 100%;position: absolute;opacity: 0;" name="file1" >

$(function(){

$("#file1").change(function(){

//创建FormData对象

var data = new FormData();

//为FormData对象添加数据

$.each($('#file1')[0].files, function(i, file) {

data.append('upload_file', file);

});

$.ajax({

url:'${pageContext.request.contextPath}/uploadImage',

type:'POST',

data:data,

cache: false,

contentType: false, //不可缺

processData: false, //不可缺

success:function(data){

//显示追加

var imgUrl="/"+data;

var showImg = "<div class='img-item'>" +

"<img src='" + imgUrl + "'>" +

"<span class='close-item iconfont'></span>" +

"</div>";

$("#addImg").before(showImg);

//数据追加

var inputImg = "<input type='hidden' name='postImage'value='" + imgUrl + "' >";

$("#typeId").after(inputImg);

}

});

});

});

java后台部分:

 1     @RequestMapping(value = "/uploadImage", method = RequestMethod.POST)

2 @ResponseBody

3 public String uploadImage(HttpServletRequest request) throws IOException {

4 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;

5 Iterator<String> iterator = multipartRequest.getFileNames();

6 String fileName = "";

7 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

8 String dir = "upload/" + sdf.format(new Date()) + "/";

9 String realPath = request.getSession().getServletContext().getRealPath("/");

10 while(iterator.hasNext()){

11 MultipartFile multipartFile = multipartRequest.getFile(iterator.next());

12 if(multipartFile != null){

13 String fn = multipartFile.getOriginalFilename();

14 String suffix = fn.substring(fn.lastIndexOf("."));

15 fileName = dir + Utils.getRandomStringByLength(6) + suffix;

16 String path = realPath + fileName;

17 path = path.replace("\\", "/");

18 File f = new File(path);

19 if(!f.mkdirs()){

20 f.mkdir();

21 }

22 multipartFile.transferTo(f);

23 }

24 }

25 return fileName;

26 }

27   // 上面方法需要用到下面的方法

28   public String getRandomStringByLength(int length) {

29 String base = "abcdefghijklmnopqrstuvwxyz0123456789";

30 Random random = new Random();

31 StringBuffer sb = new StringBuffer();

32 for (int i = 0; i < length; i++) {

33 int number = random.nextInt(base.length());

34 sb.append(base.charAt(number));

35 }

36 return sb.toString();

37 }

以上是 java Web 文件上传 的全部内容, 来源链接: utcz.com/z/392170.html

回到顶部