java-jsp-spring-文件的上传

如果觉得写得可以 或者太差 就 评论一下或者赞一下呗,多谢支持!!


1.需要的jar

 <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>

        </dependency>

2.为了控制上传文件的大小,需要在 ApplicationContext.xml中加上

<!-- 指定所上传文件的总大小不能超过10M。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 指定所上传文件的总大小不能超过10M 10485760 =10M 这里的单位是字节  注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
        <property name="maxUploadSize" value="10485760" />
        <property name="maxInMemorySize" value="4096" />
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

3.jsp页面代码

<form name="serForm" action="fileUpload.do" method="post"  enctype="multipart/form-data">
    <h1>采用流的方式上传文件</h1>
    <input type="file" name="file">
    <input type="submit" value="upload"/>
</form>

<form name="Form2" action="fileUpload2.do" method="post"  enctype="multipart/form-data">
    <h1>采用multipart提供的file.transfer方法上传文件</h1>
    <input type="file" name="file">
    <input type="submit" value="upload"/>
</form>

<form name="Form2" action="springUpload.do" method="post"  enctype="multipart/form-data">
    <h1>使用spring mvc提供的类的方法上传文件</h1>
    <input type="file" name="file">
    <input type="submit" value="upload"/>
</form>

4.spring 的controller 代码

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
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;
import java.util.List;

/**
 * Created by Administrator on 2017/9/14/014.
 */
@Controller
public class Test01 {

    @RequestMapping(value = "fileUpload",method = RequestMethod.POST)
    public String  fileUpload(
            @RequestParam("file") CommonsMultipartFile file
    ) throws IOException {
        String path ="";
        try {
            //获取输出流
            RequestAttributes ra = RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = ((ServletRequestAttributes)ra).getRequest();
            path = request.getSession().getServletContext().getRealPath("upload");
            System.out.println(path);
            if(!new File(path).exists()){
                new File(path).mkdirs();
            }
            path = path+"/"+new Date().getTime()+file.getOriginalFilename();
            OutputStream os=new FileOutputStream(path);
            InputStream is=file.getInputStream();
            int temp;
            //一个一个字节的读取并写入
            while((temp=is.read())!=(-1)) {
                os.write(temp);
            }
            os.flush();
            os.close();
            is.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        File tempFile=new File(path);
        //解析文件
        List<String> lines= FileUtils.readLines(tempFile,"utf-8");
        for(String line: lines){
            System.out.println(line);
        }
        tempFile.delete();
        return "success";
    }

    @RequestMapping(value = "fileUpload2",method = RequestMethod.POST)
    public String  fileUpload2(
            @RequestParam("file") CommonsMultipartFile file
    ) throws IOException {
        String path = "";
        RequestAttributes ra = RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = ((ServletRequestAttributes)ra).getRequest();
        path = request.getSession().getServletContext().getRealPath("upload");
        System.out.println(path);
        if(!new File(path).exists()){
            new File(path).mkdirs();
        }
        path = path+"/"+new Date().getTime()+file.getOriginalFilename();

        File newFile=new File(path);
        //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
        file.transferTo(newFile);

        //解析文件
        List<String> lines= FileUtils.readLines(newFile,"utf-8");
        for(String line: lines){
            System.out.println(line);
        }
        newFile.delete();
        return "/success";
    }

    @RequestMapping(value = "springUpload",method = RequestMethod.POST)
    public String  springUpload(
            HttpServletRequest request
    ) throws IllegalStateException, IOException {
        CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(request.getSession().getServletContext());
        String path="";
        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) {
                    path=path = request.getSession().getServletContext().getRealPath("upload")+"/"+file.getOriginalFilename();
                    //上传
                    file.transferTo(new File(path));
                }
            }
        }
        File tempFile=new File(path);
        //解析文件
        List<String> lines= FileUtils.readLines(tempFile,"utf-8");
        for(String line: lines){
            System.out.println(line);
        }
        tempFile.delete();
        return "/success";
    }
}


猜你喜欢

转载自blog.csdn.net/q18792880831/article/details/80611473