文件上传简介1---上传到指定的目录

preparation

本节摘要:本节主要介绍上传文件到指定目录。

引入:

文件上传是开发中常用的功能,本节主要介绍用commons-fileupload-1.1.jar包实现基本的文件上传功能,即上传文件到指定的目录中,同时介绍上传过程中使用到的相关类及其方法。

下载插件:

准备需要的jar包

* commons-fileupload-1.1.jar 文件上传jar包(必须导入) 
* commons-io-1.2.jar (必须导入)如果不导入的程序编译时不会报错,但是发布后运行时会报错 
* log4j-1.2.8.jar 强烈建议导入,但在本类中不是必须的,后面的上传文件到数据库中的类中会使用 
* classes12.jar 连接oracle数据库的jar包,后面的上传文件到数据库中时必须导入

开发环境:

System:xp    JDK:1.5(开发的JDK版本)  Tomcat:5.X  Myeclipse:6.5

注意:编译的JDK版本用JDK1.4(如果用JDK1.5编译,会报”Unsupported major.minor version 49.0”错误)

项目环境:

1

文件上传目录介绍:

在D盘根目录新建一个test文件夹,然后在test文件夹中新建以下两个文件夹 
* temp:存放超过设置大小的文件(>2M的文件) 
* uploadfile:上传文件的存放目录(<=2M的文件)

class&method:

 *DiskFileItemFactory
 * 实现了FileItemFactory接口
 * 主要方法有:
 * public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)
 * setRepository(File repository);设置缓存路径 也有相应的get方法
 * setSizeThreshold(int sizeThreshold);设置上传文件内存缓冲区的大小 也有相应的get方法
 * 
 * ServletFileUpload
 * 从FileUpload继承,而FileUpload又从FileUploadBase继承
 * ServletFileUpload(FileItemFactory fileItemFactory);传入一个fileItemFactory对象,构造ServletFileUpload对象
 * List parseRequest(HttpServletRequest request);从request中获得文件请求列表
 * void setSizeMax(long sizeMax);//设置允许上传文件大小 也有相应的get方法
 * setHeaderEncoding(String encoding);//设置上传文件名编码的格式 也有相应的get方法
 * 
 * Pattern
 * 正则表达式的编译表示形式,指定为字符串的正则表达式必须首先被编译为此类的实例。
 * 然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配
 * static Pattern compile(String regex);将给定的正则表达式编译到模式中
 * Matcher matcher(CharSequence input);创建匹配给定输入与此模式的匹配器,返回此模式的新匹配器
 * 
 * FileItem
 * 抽象接口,继承Serializable
 * boolean isFormField();判断FileItem类对象封装的数据是否属于一个普通表单字段,
 *                      还是属于一个文件表单字段,如果是普通表单字段则返回true,否则返回false
 * String getName();用于获得文件上传字段中的文件名
 * String getFieldName();用于返回表单字段元素的name属性值
 * long getSize();获得上传文件的大小 单位:字节
 * getContentType();用于获得上传文件的类型
 * void write(File paramFile);用于将FileItem对象中保存的主体内容保存到某个指定的文件中
 * 
 * Matcher
 * 通过解释 Pattern 对 character sequence 执行匹配操作的引擎。 
 * 通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
 * matches方法尝试将整个输入序列与该模式匹配。 
 * lookingAt 尝试将输入序列从头开始与该模式匹配。 
 * find 方法扫描输入序列以查找与该模式匹配的下一个子序列。 
 * String group(int group)返回在以前匹配操作期间由给定组捕获的输入子序列 
 * 
 * String
 *  boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束。

start

1.新建web项目UpDown,导入上面介绍的4个jar包

2.新建upload.html文件,用于上传的前台的UI界面

upload.html

 

3.新建servlet文件Upload.java文件,用于对上传的文件进行处理

upload.java

 

4.配置web.xml文件

web.xml

 

5.发布项目

result

访问的URL如下:

http://localhost:8080/UpDown/upload.html

upload.html页面如下:

image

上传完成后跳转显示的页面如下:

image

检查指定的上传目录:

image

检查文件大小限制(上传一个大于2M的文件,然后点击”开始上传”,界面显示如下):

image

检查文件后缀名过滤(上传一个exe文件,然后点击”开始上传”,界面显示如下):

image

遗留&拓展部分:

 * 1.中文乱码问题  IE界面显示乱码、上传目录乱码
 * 2.上传目录和程序不在同一台主机上的处理方式  
 * 2.文件缓存问题
 * 3.文件的端点续传功能
 * 4.上传滚动条问题

answer

1.关于中文乱码问题的解决方法

经过测试以下语句设置为utf-8即可解决,设置为gbk或gb2312都无法解决中文乱码问题

sevletFileUpload.setHeaderEncoding("utf-8");

转载于:https://www.cnblogs.com/unbentman/archive/2012/02/21/2362041.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java驱动pl sql优点_用PL/SQL和Java开发Oracle8i应用程序

用PL/SQL和Java开发Oracle8 i应用程序随着Oracle8i的发布&#xff0c;Oracle 在数据库里支持了二种主要的编程语言??PL/SQL和Java。今天&#xff0c;Oracle的许多客户既使用PL/SQL建立数据库应用程序&#xff0c;也使用Java建立数据库应用程序。既然存在二种数据库编程语言&a…

java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看

java类与对象 演练 客户姓名添加与查看java类与对象 演练 客户姓名添加与查看https://www.ixigua.com/6870483106223096327?logTag_YUmIb2rn9-6JpoNipj9r属性由于需要保存很多名字因此来一个字符串的数组保存字符串的名字即可考虑&#xff0c;定义多个长度的数组&#xff0c;例…

应用程序调试技术(更新程度:完毕)送源码及PPT

课程简介 调试技术实务分为调试基本概念和设置&#xff0c;Windows下常用到调试工具VS和Windbg的使用&#xff0c;自动化调试技术&#xff0c;以及实际调试场景示例等。不仅仅是介绍枯燥的程序调试技术&#xff0c;而是深入的从操作系统实现以及.NET虚拟机实现的本质出发&#…

安装ie浏览器的js脚本调试工具

在ie中&#xff0c;如果不依赖外部工具进行js调试&#xff0c;而使用原始的alert的话&#xff0c;会大大增加js调试的难度。而微软的office、visual studio里边都带了可以支持ie调试的工具。 在安装office(2003、2007带此工具&#xff0c;2010不带此工具)时&#xff0c;选择自定…

领域驱动设计和开发实战总结

原文见&#xff1a;http://www.infoq.com/cn/articles/ddd-in-practice 转载于:https://www.cnblogs.com/ego/archive/2012/03/03/2378104.html

linux php 上级目录,Linux目录架构详解_php

linux和Windows操作系统的显著区别之一就是目录架构的不同。Linux操作系统的目录架构遵循文件系统层级结构标准。不知你是否使用ls命令浏览过Linux的根目录“/”&#xff0c;亲爱的读者&#xff0c;您都了解这些目录的含义吗?ls -l / 遍历文件系统(点击看大图)本文将引领您浏览…

screen执行php,Linux中screen命令及使用方法

Screen简介Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话&#xff0c;并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。GUN Screen&am…

数据库字符串处理函数

在数据库操作中&#xff0c;经常要进行字符串的拼接和替换等操作。下面总结归纳如下&#xff1a; 示例数据表people如下&#xff1a; 1 sql server数据库中的sql语句可以直接用 号进行字符串的拼接。举例如下&#xff1a; select Name ‘ ’ gentle as message from people …

前端学习(417):京东制作页面25中间部分的准备工作

引入index.css作为中部样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Comp…

前端学习(418):京东制作页面26中间模块划分

index.css /* 中间模块 */ .grid{height: 480px;} .grid-coll1{width: 190px;height: 100%;background-color: pink;} .grid-coll2{width: 790px;height: 100%;background-color: skyblue;margin-left:10px;} .grid-coll3{width: 190px;height: 100%;background-color:purple;…

前端学习(419):京东制作页面27左侧分类上

index.css /* 中间模块 */ .grid{height: 480px;} .grid-coll1{width: 190px;height: 100%;background-color: pink;} .grid-coll1 ul{padding: 20px 0;} .grid-coll1 ul li{padding-left: 12px;}.grid-coll2{width: 790px;height: 100%;background-color: skyblue;margin-lef…

UNP Chapter 22 - 信号驱动I/O

22.1. 概述 信号驱动是指当某个描述字上发生了某个事件时&#xff0c;让内核通知进程。 这里描述的信号驱动不是真正的异步I/O。 第15章描述的非阻塞I/O同样不是异步I/O。在非阻塞I/O中&#xff0c;启动I/O操作后内核并不像真正的异步I/O那样立即返回&#xff0c;它只有在进程非…

php strpos与strrpos,PHP开发之 strpos stripos strrpos strripos的区别

前言在日常PHP开发中strpos stripos strrpos strripos这四个函数是会经常用到的&#xff0c;但是你又掌握了多少呢&#xff1f;在这里将着中就这4个函数做一个详细的解析。正文stripos — 查找字符串首次出现的位置(不区分大小写),应使用 运算符来测试此函数的返回值&#xff…

南京php基础学习,南京玄武区php培训有哪些(学习PHP的优点有哪些)

南京玄武区php培训有哪些&#xff0c;进行选择南京php培训的时候&#xff0c;肯定要知道php培训的学习周期&#xff0c;php乱码怎么解决&#xff0c;学习PHP的优点有哪些&#xff0c;php的性质有哪些。php培训的学习周期一般都是四到五个月和Java培训周期差不多&#xff0c;不过…

php额拍戏,像这种会演戏的演员,给我焊在剧组365天拍戏可以吗?

最近芭姐疯狂 get 到董子健的演技&#xff0c;每晚换台一边《大江大河 2》一边《流金岁月》交叉着看&#xff0c;太直观了&#xff01;《大江大河》中&#xff0c;董子健饰演的杨巡虽然戏份不及宋运辉多&#xff0c;但在有限的笔墨中&#xff0c;董子健凭借到位的演技&#xff…

照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象

这几天看到亚瑟boy的技术连载&#xff0c;也试着做了下带滤镜特效的照相机&#xff0c;效果也出来了&#xff0c;但是发现添加滤镜特效后的预览窗口卡屏现象很严重&#xff0c;于是自己索性试着尝试修改&#xff0c;在亚瑟和其他网友的代码中基本上都是对于照相机data视频流先进…

oracle linux6 u盘安装,U盘安装RHEL6

1)烧录ISO镜像用软碟通写入硬盘镜像rhel-server-6.5-x86_64-boot.iso&#xff0c;然后将rhel-server-6.2-x86_64-dvd.iso复制到U盘根目录备注&#xff1a;如果是烧录DVD那么就直接烧rhel-server-6.2-x86_64-dvd.iso即可&#xff0c;U盘安装linux不注意此处会发生找不到image错误…

网页设计师的最佳设计工具名单出炉

一个网站的基本设计是为了吸引大多数人。因此&#xff0c;要吸引更多的客户&#xff0c;他们需要运用所有可能的图案和花纹&#xff0c;创造出惊人的效果&#xff0c;体现网站自身的美感。这样&#xff0c;设计师就需要使用一些设计工具&#xff0c;以确保有更高的效率。创建3D…

HDOJ1879(继续畅通工程)

题目链接 最小生成树的题。克鲁斯卡尔算法。 View Code 1 #include <stdio.h>2 #define N 1003 #define M 50004 struct node5 {6 int a,b,d;7 }edge[M];8 int n;9 int p[N]; 10 void make_set() 11 { 12 int i; 13 for(i1;i<n;i) p[i]i; 14 } 15 int …

bug是什么PHP,bug是什么

在程序设计中&#xff0c;bug一词&#xff0c;是我们经常听到的&#xff0c;那么bug是什么意思&#xff0c;下面我们来总结一下。什么是bug?在IT中&#xff0c;bug一般表示程序中出现的错误&#xff0c;因为软件运行中出现错误&#xff0c;或者是硬件造成的错误&#xff0c;出…