- 浏览: 81411 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (80)
- java (20)
- java 日志 (1)
- 网络应用 (1)
- 算法 (3)
- struts (2)
- 线程 (2)
- 数据库 (1)
- tools (1)
- lunix (8)
- Android (4)
- Nutch原理 (1)
- 字符编码 (1)
- 框架 (3)
- spring (7)
- Oracle (2)
- 数据连接池 (3)
- solr (3)
- 思想 (2)
- 架构设计 (1)
- 缓存 (2)
- hibernate (1)
- 学习 (1)
- java,jvm (1)
- 分页插件 (1)
- javascript (1)
- nginx (2)
- svn (2)
- 内存 (3)
- sqlserver (1)
- UML (1)
- JS 跨域 (1)
- mybatis (1)
- 加密 (0)
最新评论
-
q15106202446:
不知不觉 这些都有所了解了!时间过的好快..该进攻系统架构了
学习(转) -
zkq-java:
zkq-java 写道[u][/u]引用[i][/i][*][ ...
Solr 创建索引的原理 源码分析 -
zkq-java:
[u][/u]引用[i][/i][*][img][/img][ ...
Solr 创建索引的原理 源码分析
最近项目中,在发布商品的时候要用到商品图片上传功能(网站前台和后台都要用到),所以单独抽出一个项目来供其他的项目进行调用 ,对外透露的接口的为两个servlet供外部上传和删除图片,利用到连个jarcommons-fileupload-1.2.1.jar,commons-io-1.4.jar 项目结构如下: 其中com.file.helper主要提供读相关配置文件的帮助类 com.file.servlet 是对外提供调用上传和删除的图片的servlet com.file.upload 是主要提供用于上传和删除图片的接口 1、FileConst类主要是用读取文件存储路径和设置文件缓存目录 允许上传图片的最大值 gif=image/gif 7、uploadConst.properties sizeThreshold=4096 index.jsp
01
package
com.file.helper;
02
03
import
java.io.IOException;
04
import
java.util.Properties;
05
06
public
class
FileConst {
07
08
private
static
Properties properties=
new
Properties();
09
static
{
10
try
{
11
properties.load(ReadUploadFileType.
class
.getClassLoader().getResourceAsStream(
"uploadConst.properties"
));
12
}
catch
(IOException e) {
13
e.printStackTrace();
14
}
15
}
16
17
public
static
String getValue(String key){
18
String value = (String)properties.get(key);
19
return
value.trim();
20
}
21
}
01
package
com.file.helper;
02
03
import
java.io.File;
04
import
java.io.IOException;
05
import
java.util.ArrayList;
06
import
java.util.List;
07
import
java.util.Properties;
08
09
import
javax.activation.MimetypesFileTypeMap;
10
11
12
13
/**
14
* 读取配置文件
15
* @author Owner
16
*
17
*/
18
public
class
ReadUploadFileType {
19
20
21
private
static
Properties properties=
new
Properties();
22
static
{
23
try
{
24
properties.load(ReadUploadFileType.
class
.getClassLoader().getResourceAsStream(
"allow_upload_file_type.properties"
));
25
}
catch
(IOException e) {
26
e.printStackTrace();
27
}
28
29
}
30
/**
31
* 判断该文件是否为上传的文件类型
32
* @param uploadfile
33
* @return
34
*/
35
public
static
Boolean readUploadFileType(File uploadfile){
36
if
(uploadfile!=
null
&&uploadfile.length()>
0
){
37
String ext = uploadfile.getName().substring(uploadfile.getName().lastIndexOf(
"."
)+
1
).toLowerCase();
38
List<String> allowfiletype =
new
ArrayList<String>();
39
for
(Object key : properties.keySet()){
40
String value = (String)properties.get(key);
41
String[] values = value.split(
","
);
42
for
(String v:values){
43
allowfiletype.add(v.trim());
44
}
45
}
46
// "Mime Type of gumby.gif is image/gif"
47
return
allowfiletype.contains(
new
MimetypesFileTypeMap().getContentType(uploadfile).toLowerCase())&&properties.keySet().contains(ext);
48
}
49
return
true
;
50
}
51
52
53
}
001
package
com.file.upload;
002
003
import
java.io.File;
004
import
java.util.Iterator;
005
import
java.util.List;
006
007
import
javax.servlet.http.HttpServletRequest;
008
009
import
org.apache.commons.fileupload.FileItem;
010
import
org.apache.commons.fileupload.FileUploadException;
011
import
org.apache.commons.fileupload.disk.DiskFileItemFactory;
012
import
org.apache.commons.fileupload.servlet.ServletFileUpload;
013
014
import
com.file.helper.FileConst;
015
import
com.file.helper.ReadUploadFileType;
016
017
public
class
FileUpload {
018
private
static
String uploadPath =
null
;
// 上传文件的目录
019
private
static
String tempPath =
null
;
// 临时文件目录
020
private
static
File uploadFile =
null
;
021
private
static
File tempPathFile =
null
;
022
private
static
int
sizeThreshold =
1024
;
023
private
static
int
sizeMax =
4194304
;
024
//初始化
025
static
{
026
sizeMax = Integer.parseInt(FileConst.getValue(
"sizeMax"
));
027
sizeThreshold = Integer.parseInt(FileConst.getValue(
"sizeThreshold"
));
028
uploadPath = FileConst.getValue(
"uploadPath"
);
029
uploadFile =
new
File(uploadPath);
030
if
(!uploadFile.exists()) {
031
uploadFile.mkdirs();
032
}
033
tempPath = FileConst.getValue(
"tempPath"
);
034
tempPathFile =
new
File(tempPath);
035
if
(!tempPathFile.exists()) {
036
tempPathFile.mkdirs();
037
}
038
}
039
/**
040
* 上传文件
041
* @param request
042
* @return true 上传成功 false上传失败
043
*/
044
@SuppressWarnings
(
"unchecked"
)
045
public
static
boolean
upload(HttpServletRequest request){
046
boolean
flag =
true
;
047
//检查输入请求是否为multipart表单数据。
048
boolean
isMultipart = ServletFileUpload.isMultipartContent(request);
049
//若果是的话
050
if
(isMultipart){
051
/**为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。**/
052
try
{
053
DiskFileItemFactory factory =
new
DiskFileItemFactory();
054
factory.setSizeThreshold(sizeThreshold);
// 设置缓冲区大小,这里是4kb
055
factory.setRepository(tempPathFile);
// 设置缓冲区目录
056
ServletFileUpload upload =
new
ServletFileUpload(factory);
057
upload.setHeaderEncoding(
"UTF-8"
);
//解决文件乱码问题
058
upload.setSizeMax(sizeMax);
// 设置最大文件尺寸
059
List<FileItem> items = upload.parseRequest(request);
060
// 检查是否符合上传的类型
061
if
(!checkFileType(items))
return
false
;
062
Iterator<FileItem> itr = items.iterator();
//所有的表单项
063
//保存文件
064
while
(itr.hasNext()){
065
FileItem item = (FileItem) itr.next();
//循环获得每个表单项
066
if
(!item.isFormField()){
//如果是文件类型
067
String name = item.getName();
//获得文件名 包括路径啊
068
if
(name!=
null
){
069
File fullFile=
new
File(item.getName());
070
File savedFile=
new
File(uploadPath,fullFile.getName());
071
item.write(savedFile);
072
}
073
}
074
}
075
}
catch
(FileUploadException e) {
076
flag =
false
;
077
e.printStackTrace();
078
}
catch
(Exception e) {
079
flag =
false
;
080
e.printStackTrace();
081
}
082
}
else
{
083
flag =
false
;
084
System.out.println(
"the enctype must be multipart/form-data"
);
085
}
086
return
flag;
087
}
088
089
/**
090
* 删除一组文件
091
* @param filePath 文件路径数组
092
*/
093
public
static
void
deleteFile(String [] filePath){
094
if
(filePath!=
null
&& filePath.length>
0
){
095
for
(String path:filePath){
096
String realPath = uploadPath+path;
097
File delfile =
new
File(realPath);
098
if
(delfile.exists()){
099
delfile.delete();
100
}
101
}
102
103
}
104
}
105
106
/**
107
* 删除单个文件
108
* @param filePath 单个文件路径
109
*/
110
public
static
void
deleteFile(String filePath){
111
if
(filePath!=
null
&& !
""
.equals(filePath)){
112
String [] path =
new
String []{filePath};
113
deleteFile(path);
114
}
115
}
116
117
/**
118
* 判断上传文件类型
119
* @param items
120
* @return
121
*/
122
private
static
Boolean checkFileType(List<FileItem> items){
123
Iterator<FileItem> itr = items.iterator();
//所有的表单项
124
while
(itr.hasNext()){
125
FileItem item = (FileItem) itr.next();
//循环获得每个表单项
126
if
(!item.isFormField()){
//如果是文件类型
127
String name = item.getName();
//获得文件名 包括路径啊
128
if
(name!=
null
){
129
File fullFile=
new
File(item.getName());
130
boolean
isType = ReadUploadFileType.readUploadFileType(fullFile);
131
if
(!isType)
return
false
;
132
break
;
133
}
134
}
135
}
136
137
return
true
;
138
}
139
}
4、FileUploadServlet上传文件servlet 供外部调用
01
package
com.file.servlet;
02
03
import
java.io.IOException;
04
05
import
javax.servlet.ServletException;
06
import
javax.servlet.http.HttpServlet;
07
import
javax.servlet.http.HttpServletRequest;
08
import
javax.servlet.http.HttpServletResponse;
09
10
import
com.file.upload.FileUpload;
11
12
13
@SuppressWarnings
(
"serial"
)
14
public
class
FileUploadServlet
extends
HttpServlet {
15
16
public
void
doGet(HttpServletRequest request, HttpServletResponse response)
17
throws
ServletException, IOException {
18
this
.doPost(request, response);
19
}
20
21
22
public
void
doPost(HttpServletRequest request, HttpServletResponse response)
23
throws
ServletException, IOException {
24
FileUpload.upload(request);
25
}
26
27
}
5、DeleteFileServlet删除图片供外部调用
01
package
com.file.servlet;
02
03
import
java.io.IOException;
04
05
import
javax.servlet.ServletException;
06
import
javax.servlet.http.HttpServlet;
07
import
javax.servlet.http.HttpServletRequest;
08
import
javax.servlet.http.HttpServletResponse;
09
10
import
com.file.upload.FileUpload;
11
12
@SuppressWarnings
(
"serial"
)
13
public
class
DeleteFileServlet
extends
HttpServlet {
14
public
void
doGet(HttpServletRequest request, HttpServletResponse response)
15
throws
ServletException, IOException {
16
this
.doPost(request, response);
17
}
18
19
public
void
doPost(HttpServletRequest request, HttpServletResponse response)
20
throws
ServletException, IOException {
21
String [] file = request.getParameterValues(
"fileName"
);
22
FileUpload.deleteFile(file);
23
}
24
25
}
6、allow_upload_file_type.properties
jpg=mage/jpg,image/jpeg,image/pjpeg
png=image/png,image/x-pngimage/x-png,image/x-png
bmp=image/bmp
tempPath=c\:\\temp\\buffer\\
sizeMax=4194304
uploadPath=c\:\\upload\\
8外部调用
01
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
02
<%
03
String path = request.getContextPath();
04
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
05
%>
06
07
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
08
<
html
>
09
<
head
>
10
<
base
href="<%=basePath%>">
11
12
<
title
>My JSP 'index.jsp' starting page</
title
>
13
<
meta
http-equiv
=
"pragma"
content
=
"no-cache"
>
14
<
meta
http-equiv
=
"cache-control"
content
=
"no-cache"
>
15
<
meta
http-equiv
=
"expires"
content
=
"0"
>
16
<
meta
http-equiv
=
"keywords"
content
=
"keyword1,keyword2,keyword3"
>
17
<
meta
http-equiv
=
"description"
content
=
"This is my page"
>
18
<!--
19
<link rel="stylesheet" type="text/css" href="styles.css">
20
-->
21
</
head
>
22
23
<
body
>
24
<
form
name
=
"myform"
action
=
"http://xxx.com/FileUploadServlet"
method
=
"post"
enctype
=
"multipart/form-data"
>
25
File:
26
<
input
type
=
"file"
name
=
"myfile"
><
br
>
27
<
br
>
28
<
input
type
=
"submit"
name
=
"submit"
value
=
"Commit"
>
29
</
form
>
30
</
body
>
31
</
html
>
转自:http://blog.csdn.net/ajun_studio/article/details/6639306
发表评论
-
深度解析Java内存的原型及工作原理
2013-02-17 10:21 664本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲 ... -
spring fileupload
2012-12-06 10:53 842spring支持在网络应用程序处理文件上传,提供拔插的or ... -
java面试经典(转)
2012-05-15 16:31 453http://blog.csdn.net/aweijun360 ... -
Servlet 3.0 简介
2012-05-08 15:28 1126Java servlets 是一项被普 ... -
java入门基础(一)
2012-04-05 08:19 678java 的核心思想 ... -
hibernate与ibatis的区别
2012-03-07 09:05 877hibernate 是一站式ORM orm mappin ... -
Servlet 3.0 新特性概览
2012-01-20 17:01 880转自http://blog.csdn.net/xiazdo ... -
配置文件load的几种方法(转)
2012-01-20 11:22 8241. InputStreamResource(Input ... -
Java关键字
2012-01-20 10:16 769Java关键字(keywords) abstract ... -
读源码之重拾接口与继承
2012-01-19 15:41 712Java抽象类和接口的区别(好长时间没看这种文章了) ... -
java 基础 集合
2012-01-18 11:09 850ArrayList和LinkedList, Ar ... -
HttpUrlContent 详解
2012-01-18 08:45 965下边的总结对我帮助蛮大的~不仅用法了解,整个连接流程也要明 ... -
SAXReader解析XML
2012-01-18 08:43 3188总结: Document document=new SA ... -
threadlocal
2012-01-17 11:28 743概述 我们知道Spring通 ... -
mina2.0 多线程(一)
2012-01-17 11:26 2403mina 2.0 多线程 socket通信主体代码 ... -
hibernate load与get 的区别
2012-01-17 11:12 738hibernate中get方法和load方法的根本区别 如果你 ... -
web 容器
2012-01-17 11:01 746ApplicationContext是Spring的核心, ... -
java 基础
2012-01-05 15:36 780java 基础 Comparable ... -
java基础 GC整理
2012-01-05 15:33 856HotSpot是较新的Java ...
相关推荐
首先,我们来看一下标题:“利用Common-fileupload封装的文件上传组件...附上源码”。这表明我们将讨论如何使用这个库来创建一个文件上传系统,并且提供有源码可供参考。通过`Common-fileupload`,我们可以实现用户...
在Java开发中,上传文件是一项常见的任务,Apache Commons FileUpload库正是为此而设计的。这个"最全的common-FileUpload.jar包"包含了处理HTTP请求中的多部分数据,特别是文件上传的功能。它使得开发者能够方便地从...
Java 图片上传系统基于 `common-fileUpload` 模块实现,这是一个常见的用于处理文件上传的Java库。在Java Web开发中,文件上传功能是必不可少的一部分,尤其在涉及到用户提交图片时。`common-fileUpload` 是Apache ...
综上所述,这些组件的结合使用,可以构建一个健壮的、能够处理文件上传以及与数据库交互的Java Web应用,是Java开发中常见的技术栈配置。开发者在实际项目中,可以通过这些工具来提升应用的稳定性和效率。
在Java开发中,`common...总之,`common-io`和`common-fileupload`是Java开发中的强大工具,它们简化了常见的I/O操作和文件上传处理,提高了开发效率。了解并熟练运用这些库,能帮助开发者更好地应对实际项目中的挑战。
3. Common-FileUpload库:这个库可能是一个专门为实现带进度条文件上传功能而设计的开源组件。它可能包含JavaScript、CSS和HTML代码,用于构建用户界面,以及后端处理逻辑。使用此类库可以简化开发者的工作,避免从...
本教程将深入讲解如何使用Java Servlet、Apache Commons IO库(版本2.4)以及Apache Commons FileUpload库(版本1.3)来实现这一功能。 一、Apache Commons IO与FileUpload库介绍 Apache Commons IO是一个Java库,...
通过使用Common-fileupload组件,开发者可以轻松地在JSP环境中实现文件上传功能。该组件不仅提供了基本的文件上传功能,还支持高级特性如多文件上传、文件大小限制等。这对于提高Web应用程序的功能性和用户体验非常...
在Java Web开发中,文件的上传和下载是常见的功能需求,`commons-fileupload`组件是Apache Commons项目的一个子项目,专门用于处理HTTP请求中的多部分数据,即表单文件上传。这个组件使得开发者能够轻松地在Servlet...
通过以上步骤,我们就使用Apache Commons FileUpload组件实现了一个基本的文件上传功能。你可以根据自己的需求对这个示例进行扩展,比如添加错误处理、文件类型检查和存储优化等。参考提供的博文链接,可以获取更多...
Apache Commons FileUpload 是一款非常实用且功能强大的文件上传组件,广泛应用于Java Web项目中。它极大地简化了原本复杂繁琐的文件上传过程,使得开发者能够更加专注于业务逻辑的实现。本文档旨在通过详细解读...
标题 "common-FileUpload.jar" 指向的是一个用于处理文件上传功能的Java库,具体来说是Apache Commons FileUpload组件的实现。这个组件广泛应用于Web应用开发中,特别是那些需要用户上传文件的场景,如图片上传、...
【使用commons-fileupload上传文件】 Apache Commons FileUpload是Apache组织的一个子项目,专注于处理HTTP文件上传。这个组件提供了一个简洁的API,使得开发者能够轻松地在Java应用中处理由浏览器发送的多部分...
"common-fileupload"和"common-io"是Apache Commons项目中的两个重要组件,它们为处理文件上传和输入/输出提供了强大的支持。接下来,我们将详细讨论这两个库的功能、使用方法及其在JSP应用中的重要性。 Apache ...
例如,你可以用Commons FileUpload来处理文件上传请求,然后使用Commons IO来操作上传后的文件,最后通过Commons BeanUtils来处理和验证上传文件的相关属性信息。这些库的结合使用,大大提升了开发效率,减少了代码...
新建一个servlet: FileUpload.java用于文件上传: package com.drp.util.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet....
在本文中,我们将深入探讨如何使用Java API for RESTful Web Services (JAX-RS) 和 Jersey 实现文件上传功能。标题“JAX-RS-FileUpload-Jersey-Example”暗示了我们将集中讨论如何利用这两个强大的工具来创建一个...
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...
10. **与其他Apache Commons库的集成**:Apache Commons FileUpload经常与另一个Apache Commons组件——Commons IO一起使用,共同处理文件I/O操作,例如读取和写入文件。 通过分析"commons-fileupload-1.3.2-src...