javaweb jsp文件上传

直接上代码:
jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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">
    <title>springmvc-文件上传</title>
</head>
<body>
<h1>采用流的方式上传文件</h1>
<form name="form1" action="<c:url value='/fileUpload/upload_01'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_01"/>
    <input type="submit" value="fileupload"/>
</form>
<br>
<h1>采用multipart提供的file.transfer方法上传文件1</h1>
<form name="form2" action="<c:url value='/fileUpload/upload_02'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_02"/>
    <input type="submit" value="fileupload"/>
</form>
<br>
<h1>采用multipart提供的file.transfer方法上传文件2</h1>
<form name="form2" action="<c:url value='/fileUpload/upload_03'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_03"/>
    <input type="submit" value="fileupload"/>
</form>
<br>
<h1>使用spring MVC提供的方法上传文件</h1>
<form name="form2" action="<c:url value='/fileUpload/upload_spring'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_03"/>
    <input type="submit" value="fileupload"/>
</form>
</body>
</html>

controller代码:

package com.wangzhixuan.controller;

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;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.Date;
import java.util.Iterator;

@Controller
@RequestMapping("/fileUpload")
public class FileUploadController {

    /**
     * 通过流的方式上传文件
     * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
     * <请替换成功能描述> <br>
     * <请替换成详细描述>
     * @param
     * @return
     * @author caizh
     * @since [1.0.0]
     * @version [1.0.0,2017年2月5日]
     */
    @RequestMapping("/upload_01")
    public String fileUpload_1(HttpServletRequest request,@RequestParam("file_02") CommonsMultipartFile file)throws IOException {
        //用来检测程序运行时间
        long startTime = System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
        String filepath = request.getSession().getServletContext().getRealPath("/");

        try{
            //获取输出流
            OutputStream os = new FileOutputStream(filepath+new Date().getTime()+file.getOriginalFilename());
            //获取输入流CommonsMultipartFile中可以直接得到文件的流
            InputStream is = file.getInputStream();
            int temp;
            //一个一个字节的读取并写入
            while((temp=is.read())!=(-1)){
                os.write(temp);
            }
            os.flush();
            os.close();
            is.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return "/success";
    }

    /**
     * 采用file.Transto 来保存上传的文件
     * <请替换成功能描述> <br>
     * <请替换成详细描述>
     * @param file
     * @return
     * @throws IOException
     * @author caizh
     * @since [1.0.0]
     * @version [1.0.0,2017年2月5日]
     */
    @RequestMapping("/upload_02")
    public String fileUpload_2(@RequestParam("file_02") CommonsMultipartFile file)throws IOException {
        long startTime = System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
        String path = "E:/"+new Date().getTime()+file.getOriginalFilename();

        File newFile = new File(path);
        //通过CommonsMultipartFile 的方法直接写文件
        file.transferTo(newFile);
        long endTime = System.currentTimeMillis();
        System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return "/success";
    }

    /**
     * 使用MultipartFile上传文件
     * <请替换成功能描述> <br>
     * <请替换成详细描述>
     * @param file
     * @return
     * @author caizh
     * @since [1.0.0]
     * @version [1.0.0,2017年2月5日]
     */
    @RequestMapping("/upload_03")
    public String fileUpload_3(@RequestParam(value="file_03",required=false)MultipartFile file,
                               HttpServletRequest request){
        String path = request.getSession().getServletContext().getRealPath("upload");
        System.out.println(path);
        String fileName = file.getOriginalFilename();
        File targetFile = new File(path,fileName);
        if(!targetFile.exists()){
            targetFile.mkdirs();
        }
        //保存
        try {
            file.transferTo(targetFile);
        }catch(Exception e){
            e.printStackTrace();
        }
        return "/success";
    }

    /**
     * 采用spring提供的上传文件的方法
     * <请替换成功能描述> <br>
     * <请替换成详细描述>
     * @param request
     * @return
     * @throws IllegalStateException
     * @throws IOException
     * @author caizh
     * @since [1.0.0]
     * @version [1.0.0,2017年2月5日]
     */
    @RequestMapping("/upload_spring")
    public String springUpload(HttpServletRequest request)throws IllegalStateException, IOException{
        long startTime = System.currentTimeMillis();
        //将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        //检查form中是否有enctype="multipart/form-data"
        if(multipartResolver.isMultipart(request))
        {
            //将request变成多request
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
            //获取multiRequest中所有的文件名
            Iterator iter = multiRequest.getFileNames();

            while(iter.hasNext()){
                //一次遍历所有的文件
                MultipartFile file = multiRequest.getFile(iter.next().toString());
                if(file!=null){
                    String path = "E:/springUpload"+file.getOriginalFilename();
                    //上传
                    file.transferTo(new File(path));
                }
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println("方法三的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return "/success";
    }

}

此时上传的图片可以在Tomcat上直接看到了 String filepath = request.getSession().getServletContext().getRealPath(“/”);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值