jsp文件上传与下载

一.文件的上传

1.原生方式上传

2.jquery方式上传

代码方式如下: doupload.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="org.apache.commons.io.IOUtils" %>
<%@ page import="java.io.File" %>
<%@ page import="java.io.FileOutputStream" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="java.util.List" %
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<% //创建上传工厂
    DiskFileItemFactory factory =new DiskFileItemFactory();
    //设置缓冲期大小为8kb
    factory.setSizeThreshold(8*1024);
    //创建上传组件
    ServletFileUpload servletFileUpload=new ServletFileUpload(factory);
    //设置上传总大小
    servletFileUpload.setSizeMax(1024*1024*80);
    //单文件大小40MB
    servletFileUpload.setFileSizeMax(1024*1024*40);
    //解析请求数据
    List items = servletFileUpload.parseRequest(request);
    //遍历输出items
    for(FileItem item:items) {
        // isFormField 是否普通输入框(除type=file以外的输入框)
        if (item.isFormField()) {
            //如果是普通输入框
            System.out.println(item.getFieldName());
            System.out.println(item.getString());
        } else {
            //文件上传
            System.out.println("获得文件上传的值");
            System.out.println(item.getFieldName());
            System.out.println(item.getName());
            pageContext.setAttribute("filename", item.getName());
            //建立白名单或黑名单机制
            //黑名单
            if (item.getName().endsWith(".jsp")) {
                response.getWriter().println("

上传文件格式非法!

"); return; } //创建白名单机制 else if (!item.getName().endsWith(".jsp")){ response.getWriter().println("

上传的格式合法!

"); } //TODO:保证文件名的唯一性 //获取输入流并保存到文件 //获取项目的真实路径 String realpath = request.getServletContext().getRealPath("/"); String filename = realpath + File.separator + item.getName(); OutputStream os = new FileOutputStream(new File(filename)); IOUtils.copy(item.getInputStream(), os); } } %> " />

h5.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title
    
    



二.文件的下载

download.jsp

<%@ page import="java.io.File" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="org.apache.commons.io.IOUtils" %>
<%@ page import="java.io.FileInputStream" %
    //读取一个文件
    File file=new File("c:\\lxf.txt");

    OutputStream os=response.getOutputStream();
    //指定文件名,防止乱码
    response.setHeader("Content-disposition","filename="+ URLEncoder.encode("lxf.txt","utf-8"));
    IOUtils.copy(new FileInputStream(file),os);

    //刷新
    os.flush();
    //关闭
    os.close();
%>

 

你可能感兴趣的:(jsp文件上传,下载,后端)