JSP 文件上传

JSP 文件上传

上一节: JSP session(会话)跟踪

上一节

下一节: JSP 处理日期

下一节

JSP 文件上传

文件上传

在本章中,我们将讨论JSP中的文件上传。JSP可以与HTML表单标记一起使用,以允许用户将文件上传到服务器。上传的文件可以是文本文件,二进制文件或图像文件,也可以只是任何文档。

创建文件上传表单

现在让我们了解如何创建文件上传表单。以下HTML代码创建一个上载器表单。以下是要注意的重点-

表单方法属性应设置为POST方法,并且不能使用GET方法。

表单enctype属性应设置为multipart/form-data。

表单action属性应设置为JSP文件,该文件将处理后端服务器上的文件上传。以下示例是使用/myweb/UploadServlet程序文件上传文件。

要上传单个文件,您应该使用单个标记,其属性type为“file”。要允许上传多个文件,请包含多个具有不同名称属性值的input标签。浏览器将“浏览”按钮与每个按钮相关联。

以下是:fileupload.jsp

File Uploading Form

File Upload:

Select a file to upload:

enctype = "multipart/form-data">


编写后端处理程序

以下是UploadFile.jsp的源代码。这样可以一次处理多个文件的上传。现在让我们在继续上传文件之前考虑以下内容。

以下示例取决于FileUpload;确保您的类路径中具有commons-fileupload.xxjar文件的最新版本。您可以从https://commons.apache.org/fileupload/下载。

FileUpload取决于Commons IO。确保您的类路径中具有commons-io-xxjar文件的最新版本。您可以从https://commons.apache.org/io/下载。

package com.jc2182.demo;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

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 org.apache.commons.fileupload.*;

import org.apache.commons.fileupload.disk.*;

import org.apache.commons.fileupload.servlet.*;

/**

* Servlet implementation class UploadServlet

*/

@WebServlet("/UploadServlet")

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

// 上传文件存储目录

//private static final String = "upload";

// 上传配置

private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3; // 3MB

private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB

private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB

private static final String UPLOAD_DIRECTORY = "F:\\myweb\\javaworkspace\\myweb\\WebContent\\upload";

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

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

// 检测是否为多媒体上传

if (!ServletFileUpload.isMultipartContent(request)) {

// 如果不是则停止

PrintWriter writer = response.getWriter();

writer.println("Error: 表单必须包含 enctype=multipart/form-data");

writer.flush();

return;

}

// 配置上传参数

DiskFileItemFactory factory = new DiskFileItemFactory();

// 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中

factory.setSizeThreshold(MEMORY_THRESHOLD);

// 设置临时存储目录

factory.setRepository(new File(System.getProperty("java.io.tmpdir")));

ServletFileUpload upload = new ServletFileUpload(factory);

// 设置最大文件上传值

upload.setFileSizeMax(MAX_FILE_SIZE);

// 设置最大请求值 (包含文件和表单数据)

upload.setSizeMax(MAX_REQUEST_SIZE);

// 中文处理

upload.setHeaderEncoding("UTF-8");

// 如果目录不存在则创建

File uploadDir = new File(UPLOAD_DIRECTORY);

if (!uploadDir.exists()) {

uploadDir.mkdir();

}

try {

// 解析请求的内容提取文件数据

List formItems = upload.parseRequest(request);

if (formItems != null && formItems.size() > 0) {

// 迭代表单数据

for (FileItem item : formItems) {

// 处理不在表单中的字段

if (!item.isFormField()) {

String fileName = new File(item.getName()).getName();

String filePath = UPLOAD_DIRECTORY + File.separator + fileName;

File storeFile = new File(filePath);

// 在控制台输出文件的上传路径

System.out.println(filePath);

// 保存文件到硬盘

item.write(storeFile);

request.setAttribute("message", "文件上传成功!");

}

}

}

} catch (Exception ex) {

request.setAttribute("message",

"错误信息: " + ex.getMessage());

}

// 跳转到 message.jsp

getServletContext().getRequestDispatcher("/message.jsp").forward(request, response);

}

}

现在,将上面的代码放入UploadServlet.java中。

以下创建接收消息的jsp页面

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

文件上传结果

${message}

以下配置在web.xml中配置Servlet

UploadServlet

UploadServlet

com.jc2182.demo.UploadServlet

UploadServlet

/myweb/UploadServlet

开始访问:http://localhost:8080/fileupload.jsp,并且上传文件,如果您上传成功您将看到这样的页面:

上一节: JSP session(会话)跟踪

上一节

下一节: JSP 处理日期

下一节

查看笔记 分享笔记

笔记内容:

称呼:

Email:

站点:

分享笔记 重置

分类导航

前端

Ajax 教程

Angular 教程

Aurelia 教程

Bootstrap 教程

ChartJS 教程

CSS 教程

ES6 教程

FontAwesome 教程

HTML 教程

HTML 字符集 教程

HTML 游戏 教程

JavaScript 教程

jQuery 教程

Less 教程

React 教程

Sass 教程

Stylus 教程

TypeScript 教程

Unity 教程

Vue.js 教程

WebAssembly 教程

XAML 教程

颜色 教程

服务端

C# 教程

C++ 教程

COBOL 教程

C语言 教程

Fortran 教程

Go 教程

Groovy 教程

Java 教程

JSP 教程

JVM 教程

Kotlin 教程

Lisp 教程

Lua 教程

Node.js 教程

Pascal 教程

Perl 教程

PHP 教程

Python 教程

Python 3 教程

Ruby 教程

Rust 教程

Scala 教程

Spring 教程

Spring Boot 教程

Spring Cloud 教程

VB.Net 教程

移动端

Android 教程

IOS 教程

Objective-C 教程

React Native 教程

Swift 教程

小程序 教程

数据库

Access 教程

DB2 教程

Mariadb 教程

Memcached 教程

MongoDB 教程

MySQL 教程

Neo4j 教程

PL/SQL 教程

PostgreSQL 教程

Redis 教程

SQL 教程

SQL Server 教程

SQLite 教程

T-SQL 教程

数据格式

Jackson 教程

JSON 教程

SVG 教程

XML 教程

开发工具

ActiveMQ 教程

Ant 教程

Apache HttpClient 教程

Apache POI PPT 教程

AWS 教程

Docker 教程

ElasticSearch 教程

ExpressJS 教程

GIT 教程

GitLab 教程

Google Maps 教程

Gradle 教程

Java NIO 教程

JavaFX 教程

JavaMail 教程

JDBC 教程

jMeter 教程

JPA 教程

jsoup 教程

Junit 教程

KoaJS 教程

Kubernetes 教程

Log4j 教程

Logstash 教程

Lucene 教程

Makefile 教程

Maven 教程

RESTful 教程

Sed 教程

SEO 教程

Servlet 教程

SLF4J 教程

Socket.IO 教程

Struts 教程

SVN 教程

TestNG 教程

UML 教程

UNIX / LINUX 教程

WebSocket 教程

WPF 教程

xStream 教程

区块链 教程

数据处理

Flink 教程

Flume 教程

Hadoop 教程

Hbase 教程

Hive 教程

Kafka 教程

Kibana 教程

MapReduce 教程

MATLAB 教程

MyBatis 教程

Pig 教程

R语言 教程

Solr 教程

Spark 教程

Storm 教程

Zookeeper 教程

大数据分析 教程

数据仓库 教程

数据挖掘 教程

计算机基础

HTTP 教程

IPv4 教程

IPv6 教程

Ubantu 教程

WebServices 教程

嵌入式系统 教程

操作系统 教程

数据结构和算法 教程

汇编语言 教程

物联网 教程

电子电路基础 教程

编译器设计 教程

网站开发 教程

计算机 教程

计算机基础 教程

计算机网络 教程

设计模式 教程

AI

CNTK 教程

Keras 教程

PyTorch 教程

TensorFlow 教程

人工智能 教程

机器学习 教程

Python 技术

Django 教程

Flask 教程

NumPy 教程

Pandas 教程

Pillow 教程

PyGTK 教程

PyQt5 教程

PySpark 教程

pytest 教程

Python -数据科学 教程

Python MySQL 教程

Python 取证 教程

Python 数据结构 教程

Python 文本处理 教程

Python 网络编程 教程

Python 网页抓取 教程

Python 设计模式 教程

RxPY 教程

SciPy 教程

Seaborn 教程

SymPy 教程

wxPython 教程

框架

Laravel 教程

Web 图标Icon 教程

Web2py 教程

WebGL 教程

WebRTC 教程

WordPress 教程

Yii 教程

Zend Framework 教程

SAP

Crystal Reports 教程

相关新闻

offer比较:兴业、中兴、大华、海康、招银、CVTE
帕尼尼球星卡FIFA365

offer比较:兴业、中兴、大华、海康、招银、CVTE

🕒 02-15 👽 2853
普通护照姓名加注
365体育官网登录

普通护照姓名加注

🕒 01-28 👽 3404
暗黑3戒律值是啥意思
帕尼尼球星卡FIFA365

暗黑3戒律值是啥意思

🕒 11-25 👽 5878
桥怎么画
365bet足球直播

桥怎么画

🕒 11-10 👽 9736
关于鱼竿4.5米和5.4米,怎么选
帕尼尼球星卡FIFA365

关于鱼竿4.5米和5.4米,怎么选

🕒 08-24 👽 3840
骣牛是什么意思
365bet足球直播

骣牛是什么意思

🕒 08-31 👽 1829