JavaWeb——文件上传

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/WEB16/upload" method="post" enctype="multipart/form-data">
        <input type="text" name="text">
        <input type="file" name="filename">
        <input type="submit">
    </form>
</body>
</html>

文件上传(普通版)

package cn.x5456.uploadDemo;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

@WebServlet(name = "FileuploadServlet")
public class FileuploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1.创建磁盘文件项工厂
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //2.实例化文件上传核心类
        ServletFileUpload upload = new ServletFileUpload(factory);
        //设置上传文件的名称的编码
        upload.setHeaderEncoding("UTF-8");
        //3.解析request---获得文件项集合
        List<FileItem> list = null;
        try {
             list = upload.parseRequest(request);
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
        //4.遍历集合
        for(FileItem item : list){
            // 判断是否为表单项
            boolean formField = item.isFormField();
            // 表单项
            if(formField){
                String fieldName = item.getFieldName();
                String fieldValue = item.getString();
                System.out.println(fieldName+":"+fieldValue);
            }// 文件上传项
            else{
                // 获取文件名
                String fileName = item.getName();
                // 获取文件输入流
                InputStream in = item.getInputStream();
                // 获取真路径
                String path = super.getServletContext().getRealPath("WEB-INF/upload");
                // 设置输出路径
                OutputStream out = new FileOutputStream(path+"/"+fileName);
                int len = 0;
                byte[] b = new byte[1024];
                while ((len=in.read(b))!=-1){
                    out.write(b,0,len);
                }
                in.close();
                out.close();
            }
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

文件上传(缓冲区版)

package com.itheima;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

public class FileuploadServlet2 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		try {

			//1、创建磁盘文件项工厂
			//作用:设置缓存文件的大小  设置临时文件存储的位置
			String path_temp = this.getServletContext().getRealPath("temp");
			//DiskFileItemFactory factory = new DiskFileItemFactory(1024*1024, new File(path_temp));
			DiskFileItemFactory factory = new DiskFileItemFactory();
			factory.setSizeThreshold(1024*1024);
			factory.setRepository(new File(path_temp));
			//2、创建文件上传的核心类
			ServletFileUpload upload = new ServletFileUpload(factory);
			//设置上传文件的名称的编码
			upload.setHeaderEncoding("UTF-8");

			//ServletFileUpload的API
			boolean multipartContent = upload.isMultipartContent(request);//判断表单是否是文件上传的表单
			if(multipartContent){
				//是文件上传的表单
				//***解析request获得文件项集合
				List<FileItem> parseRequest = upload.parseRequest(request);
				if(parseRequest!=null){
					for(FileItem item : parseRequest){
						//判断是不是一个普通表单项
						boolean formField = item.isFormField();
						if(formField){
							//username=zhangsan
							String fieldName = item.getFieldName();
							String fieldValue = item.getString("UTF-8");//对普通表单项的内容进行编码

							System.out.println(fieldName+"----"+fieldValue);

							//当表单是enctype="multipart/form-data"时 request.getParameter相关的方法
							//String parameter = request.getParameter("username");

						}else{
							//文件上传项
							//文件的名
							String fileName = item.getName();
							//获得上传文件的内容
							InputStream in = item.getInputStream();
							String path_store = this.getServletContext().getRealPath("upload");
							OutputStream out = new FileOutputStream(path_store+"/"+fileName);
							IOUtils.copy(in, out);
							in.close();
							out.close();

							//删除临时文件
							item.delete();

						}
					}
				}

			}else{
				//不是文件上传表单
				//使用原始的表单数据的获得方式 request.getParameter();
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		}

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

  

原文地址:https://www.cnblogs.com/x54256/p/8456625.html

时间: 2024-10-08 14:53:13

JavaWeb——文件上传的相关文章

JavaWeb文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请 求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common- fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,st

JavaWeb——文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

【Java】JavaWeb文件上传和下载

文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能.common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载.用该组件可实现一次上传一个或多个文件,并可限制文件大小. 开发环境 创建一个javaweb项目,加入common-f

JavaWeb文件上传下载,使用fileupload组件

一.引入jar包 1. commons-fileupload-1.2.1.jar 2. commons-io-1.4.jar 二.文件上传 1. html代码 1 <form name="upload_test" action="${pageContext.request.contextPath}/FileServlet?method=upload" method="post" enctype="multipart/form-da

JavaWeb 文件上传下载

1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图片或网盘等功能都是利用文件上传下载功能实现的. 文件上传下载实际上是两步操作,第一是文件上传,就是将本地文件上传到服务器端,实现文件多用户之间的共享,第二是文件下载,就是将服务器端的文件下载到本地磁盘. 1.2. 文件上传下载实现原理 首先,需要知道文件是如何实现上传及下载的.文件上传及下载实现原理如下: 文件上传实现流程如下:

JavaWeb—文件上传基础

进行文件上传时,表单需要做的准备: 1)请求方式POST:<form action="uploadServlet" method="post" ...> 2) 使用file表单域:<input type="file" name="file"/> 关于enctype: > application/x-www-form-urlencoded:表单enctype属性的默认值.这种编码方案使用有限的字符集

测试扩展(七)——javaweb文件上传逻辑

从request中获得上传的文件名 从request中获得对应的字节流getInputStream() 创建一个服务器端的文件输出流[带着服务端地址和文件名] 将[request中的字节流]输入到[服务器端的文件输出流] 关闭输入流[为了释放资源] 关闭输出流 升级:spring MultipartFile.transferTo 原文地址:https://www.cnblogs.com/dinglijun/p/10368806.html

JavaWeb项目实现文件上传动态显示进度

很久没有更新博客了,这段时间实在的忙的不可开交,项目马上就要上线了,要修补的东西太多了.当我在学习JavaWeb文件上传的时候,我就一直有一个疑问,网站上那些博客的图片是怎么上传的,因为当提交了表单之后网页就跳转了.后来我学习到了Ajax,我知道了浏览器可以异步的发送响应,这时我又有新的疑问,那就是在我上传一些文件的时候,那些网站的上传进度是怎么做到的,因为servlet直到上传完成之后才完成响应. 最近我们的项目中有一个地方中需要用到一个功能,当用户点击一个处理按钮时,前台会实时的显示后台处理

JavaWeb学习总结(五十)——文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru