- 浏览: 9763 次
- 性别:
最近公司做个ftp下载服务器,当然要做后台管理,所以其中也要上传,哎,项目现在需求还是不稳定,天天改啊改,把这个上传的部分跟大家分享下吧,希望大家可以给点意见,我做的支持多文件上传,当然其中我也参考了一些网络资料,起初本来想用swf组件也用上的,但是中间遇到了样式调整问题,而且不好调,就干脆没用啦,
1.jsp 主要代码:
<script language="javascript">
var num = 0;
function upload(){
document.getElementById("status").innerHTML = "文件上传中...";
document.getElementById("form").action = "AddFileTest" ;
document.getElementById("form").submit();
}
function additem(id)
{
var row,cell,str;
row = eval("document.all["+'"'+id+'"'+"]").insertRow();
if(row != null )
{
cell = row.insertCell();
str="<input type="+'"'+"file"+'"'+"id=uploadFile["+ num +"].file"+ " name=uploadFile["+ num +"].file><input type="+'"'+"button"+'"'+" value="+'"'+"删除"+'"'+" onclick='deleteitem(this,"+'"'+"tb"+'"'+");'>"
cell.innerHTML=str;
}
num++;
}
function deleteitem(obj,id)
{
var rowNum,curRow;
curRow = obj.parentNode.parentNode;
rowNum = eval("document.all."+id).rows.length - 1;
eval("document.all["+'"'+id+'"'+"]").deleteRow(curRow.rowIndex);
}
function callback(msg)
{
document.getElementById("status").innerHTML = "文件上传完成...<br>" + msg;
}
</script>
</head>
<body bgcolor="#ffffff">
<fieldset>
<div id="status"></div>
<form id="form" name="form" method="post" enctype="multipart/form-data">
<table id="tb">
</table>
<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
<input type="button" name="btnAddFile" value="增加文件" onclick="additem('tb')"/>
<input type="button" name="btnUpload" value="上传" onclick="upload()"/>
</form>
</fieldset>
2.servlet代码:
package download.control;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletConfig;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class AddFileServlet extends HttpServlet {
public AddFileServlet(){
super();
}
public void init() throws ServletException {
System.out.println("+++++++++++AddFileServlet++++++++++");
}
public void init(ServletConfig config) throws ServletException{
super.init(config);
System.out.println("++++++++ AddFileServlet init(config) ++++++++") ;
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("++++++++ AddFileServlet doPost ++++++++") ;
response.setContentType("text/html; charset=UTF-8");
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
PrintWriter out = response.getWriter();
/* 定义上传文件的存放路劲*/
String base = request.getSession().getServletContext().getRealPath("")+"\\admin\\upload";
/*定义上传文件的缓存位置*/
String temPath = request.getSession().getServletContext().getRealPath("")+"\\admin\\upload\\temp";
/* 当缓存或存储路劲不存在时将自动创建文件*/
if (!new File(base).isDirectory()){
new File(base).mkdirs();
}
if(!new File(temPath).isDirectory()){
new File(temPath).mkdirs();
}
try{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
upload.setSizeMax(10002400000l);
List<FileItem> items=null;
try{
items = upload.parseRequest(request);
}catch (FileUploadException e) {
// TODO: handle exception
e.printStackTrace();
}
Iterator i = items.iterator();
FileItem file = null;
while (i.hasNext()) {
FileItem item = (FileItem) i.next();
System.out.println(item);
System.out.println(item.getFieldName());
System.out.println(item.getName());
System.out.println(i.hasNext());
if(item.isFormField()){
System.out.println(item.getName());
}else{
file =item;
String fileName = file.getName();
System.out.println(fileName);
if(fileName!=null&&fileName!=""){
/* 得到文件类型 */
String fileType = file.getName().substring(file.getName().lastIndexOf("."), file.getName().length());
/* 判断文件类型*/
System.out.println(fileType);
/* 在本需求中管理员上传文件类型为压缩文件.war/.rar/.giz/.apk*/
if(fileType.toLowerCase().equals(".rar")||fileType.toLowerCase().equals(".giz")||fileType.toLowerCase().equals(".apk")){
base+="\\RarVsGiz\\" ;
}else if(fileType.toLowerCase().equals(".txt")||fileType.toLowerCase().equals(".doc")||fileType.toLowerCase().equals(".xls")||fileType.toLowerCase().equals(".pdf")
||fileType.toLowerCase().equals(".ppt")){
base+="\\Text\\";
}else if(fileType.toLowerCase().equals(".wmv") || fileType.toLowerCase().equals(".rm") || fileType.toLowerCase().equals(".rmvb") || fileType.toLowerCase().equals(".avi")
|| fileType.toLowerCase().equals(".flv")|| fileType.toLowerCase().equals(".f4v")||fileType.toLowerCase().equals(".mp4")){
base+="\\Video\\";
}else if(fileType.toLowerCase().equals(".jpg") || fileType.toLowerCase().equals(".gif") ||fileType.toLowerCase().equals(".bmp") || fileType.toLowerCase().equals(".png")
|| fileType.toLowerCase().equals(".tif")||fileType.toLowerCase().equals(".jpeg")){
base+="\\Images\\";
}else{
base+="\\Bad\\" ;
}
File newFile = new File(base+file.getName());
System.out.println(newFile);
System.out.println(file);
file.write(newFile);
base = request.getSession().getServletContext().getRealPath("")+"\\admin\\upload";
}
}
}
}catch (Exception e) {
// TODO: handle exception
e.getMessage();
}
out.flush();
out.close();
response.sendRedirect("uploadSucess.jsp");
}
}
由于我还没把代码分层好,所以都写在servlet拉,上面代码中特别注意的是:item.isFormField()这个方法,当时我一直以为这个方法时只要得文件信息这个方法就为true值,其实不然,这个方法时判断得到的数据类型是否是普通的表单数据类型,在此,我们的File不是普通的表单数据提交,所以返回值是false,这样在下面判断表单中是否有file文件就可以啦
在web。xml中配置servlet就不要多讲啦吧
1.jsp 主要代码:
<script language="javascript">
var num = 0;
function upload(){
document.getElementById("status").innerHTML = "文件上传中...";
document.getElementById("form").action = "AddFileTest" ;
document.getElementById("form").submit();
}
function additem(id)
{
var row,cell,str;
row = eval("document.all["+'"'+id+'"'+"]").insertRow();
if(row != null )
{
cell = row.insertCell();
str="<input type="+'"'+"file"+'"'+"id=uploadFile["+ num +"].file"+ " name=uploadFile["+ num +"].file><input type="+'"'+"button"+'"'+" value="+'"'+"删除"+'"'+" onclick='deleteitem(this,"+'"'+"tb"+'"'+");'>"
cell.innerHTML=str;
}
num++;
}
function deleteitem(obj,id)
{
var rowNum,curRow;
curRow = obj.parentNode.parentNode;
rowNum = eval("document.all."+id).rows.length - 1;
eval("document.all["+'"'+id+'"'+"]").deleteRow(curRow.rowIndex);
}
function callback(msg)
{
document.getElementById("status").innerHTML = "文件上传完成...<br>" + msg;
}
</script>
</head>
<body bgcolor="#ffffff">
<fieldset>
<div id="status"></div>
<form id="form" name="form" method="post" enctype="multipart/form-data">
<table id="tb">
</table>
<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
<input type="button" name="btnAddFile" value="增加文件" onclick="additem('tb')"/>
<input type="button" name="btnUpload" value="上传" onclick="upload()"/>
</form>
</fieldset>
2.servlet代码:
package download.control;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletConfig;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class AddFileServlet extends HttpServlet {
public AddFileServlet(){
super();
}
public void init() throws ServletException {
System.out.println("+++++++++++AddFileServlet++++++++++");
}
public void init(ServletConfig config) throws ServletException{
super.init(config);
System.out.println("++++++++ AddFileServlet init(config) ++++++++") ;
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("++++++++ AddFileServlet doPost ++++++++") ;
response.setContentType("text/html; charset=UTF-8");
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
PrintWriter out = response.getWriter();
/* 定义上传文件的存放路劲*/
String base = request.getSession().getServletContext().getRealPath("")+"\\admin\\upload";
/*定义上传文件的缓存位置*/
String temPath = request.getSession().getServletContext().getRealPath("")+"\\admin\\upload\\temp";
/* 当缓存或存储路劲不存在时将自动创建文件*/
if (!new File(base).isDirectory()){
new File(base).mkdirs();
}
if(!new File(temPath).isDirectory()){
new File(temPath).mkdirs();
}
try{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
upload.setSizeMax(10002400000l);
List<FileItem> items=null;
try{
items = upload.parseRequest(request);
}catch (FileUploadException e) {
// TODO: handle exception
e.printStackTrace();
}
Iterator i = items.iterator();
FileItem file = null;
while (i.hasNext()) {
FileItem item = (FileItem) i.next();
System.out.println(item);
System.out.println(item.getFieldName());
System.out.println(item.getName());
System.out.println(i.hasNext());
if(item.isFormField()){
System.out.println(item.getName());
}else{
file =item;
String fileName = file.getName();
System.out.println(fileName);
if(fileName!=null&&fileName!=""){
/* 得到文件类型 */
String fileType = file.getName().substring(file.getName().lastIndexOf("."), file.getName().length());
/* 判断文件类型*/
System.out.println(fileType);
/* 在本需求中管理员上传文件类型为压缩文件.war/.rar/.giz/.apk*/
if(fileType.toLowerCase().equals(".rar")||fileType.toLowerCase().equals(".giz")||fileType.toLowerCase().equals(".apk")){
base+="\\RarVsGiz\\" ;
}else if(fileType.toLowerCase().equals(".txt")||fileType.toLowerCase().equals(".doc")||fileType.toLowerCase().equals(".xls")||fileType.toLowerCase().equals(".pdf")
||fileType.toLowerCase().equals(".ppt")){
base+="\\Text\\";
}else if(fileType.toLowerCase().equals(".wmv") || fileType.toLowerCase().equals(".rm") || fileType.toLowerCase().equals(".rmvb") || fileType.toLowerCase().equals(".avi")
|| fileType.toLowerCase().equals(".flv")|| fileType.toLowerCase().equals(".f4v")||fileType.toLowerCase().equals(".mp4")){
base+="\\Video\\";
}else if(fileType.toLowerCase().equals(".jpg") || fileType.toLowerCase().equals(".gif") ||fileType.toLowerCase().equals(".bmp") || fileType.toLowerCase().equals(".png")
|| fileType.toLowerCase().equals(".tif")||fileType.toLowerCase().equals(".jpeg")){
base+="\\Images\\";
}else{
base+="\\Bad\\" ;
}
File newFile = new File(base+file.getName());
System.out.println(newFile);
System.out.println(file);
file.write(newFile);
base = request.getSession().getServletContext().getRealPath("")+"\\admin\\upload";
}
}
}
}catch (Exception e) {
// TODO: handle exception
e.getMessage();
}
out.flush();
out.close();
response.sendRedirect("uploadSucess.jsp");
}
}
由于我还没把代码分层好,所以都写在servlet拉,上面代码中特别注意的是:item.isFormField()这个方法,当时我一直以为这个方法时只要得文件信息这个方法就为true值,其实不然,这个方法时判断得到的数据类型是否是普通的表单数据类型,在此,我们的File不是普通的表单数据提交,所以返回值是false,这样在下面判断表单中是否有file文件就可以啦
在web。xml中配置servlet就不要多讲啦吧
发表评论
文章已被作者锁定,不允许评论。
-
没使用UploadFile实现文件下载Demo源码
2013-08-15 10:17 15501.首先本小姐很久没写代码,很多东西其实都忘的差不多,特别是H ... -
使用插件实现文件上传
2012-10-21 10:37 0以下为页面代码,当在页面需要使用该插件时只要导入该文件即可 ... -
分页类的2
2012-10-21 10:30 778package com.haole.tools; publi ... -
分页写的类
2012-10-21 10:29 1068package com.haole.tools; publi ... -
jdbc
2012-10-21 10:27 927package com.haole.tools; i ... -
文本编辑器及JqeasyUi
2012-10-21 10:19 801该文本编辑器可以上传各种格式的文本,使用很方便,,,,,,,, ... -
邮箱用户名电话号码验证
2012-10-21 10:11 1489function dmCheck(){ var ...
相关推荐
接下来,我们将详细讨论AspUpload组件的安装方法以及如何使用它创建一个简单的上传示例。 **安装AspUpload组件** 1. **下载组件**:首先,你需要从官方网站或其他可信来源下载AspUpload组件的安装包。确保选择与你...
无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅上传,不作保存...
Uploadify是一款功能强大且易于使用的文件上传组件,它通过Flash技术实现,能够帮助开发者在Web应用中轻松实现文件上传功能。本篇内容将围绕Uploadify 3.1版本进行详细介绍,并提供一个完整的示例代码来帮助理解其...
【标题】"UpLoadFile MVC完整Demo支持断点续传" 涉及到的关键技术主要是文件上传和断点续传,在MVC框架下实现。MVC(Model-View-Controller)是微软提出的一种软件设计模式,常用于构建Web应用程序。在本Demo中,它...
无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5 支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅上传,不作...
本资源“小程序复杂表单含文件上传demo.rar”提供了一个全面展示如何在小程序中实现复杂表单提交功能,包括表单字段验证、错误提示以及多文件上传与个数限制的示例。以下将详细讲解这些关键知识点。 首先,表单是...
**WCF(Windows Communication Foundation)**是微软.NET框架下的一个组件,它提供了一种用于创建分布式应用程序的强大且灵活的方式。WCF集成了多种通信技术,如HTTP、TCP、 Named Pipe等,使得服务间的交互变得更加...
Asp无组件上传带进度条 1.0 无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在...
总的来说,实现ASP无组件上传带进度条需要结合前端和后端的技能,包括HTML5的新特性、JavaScript/Ajax的使用、ASP的文件处理以及数据库操作。这个过程中涉及到的技术点丰富多样,不仅考验开发者对多语言的熟练度,还...
无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅上传,不作保存...
无组件上传带真实进度条 <br>其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅...
关于“diyUpload”这个文件,可能包含了一个自定义上传组件的实现,比如使用Vue或React等前端框架编写。在分析这个组件时,我们需要注意其如何处理文件选择、状态管理、异步上传和取消操作等方面。 总之,实现多...
### 在Struts2中使用Uploadify组件上传文件 #### 一、Uploadify简介与特性 Uploadify是一款基于jQuery的文件上传插件,以其强大的功能和优秀的用户体验受到开发者们的青睐。它利用Flash技术实现异步文件上传,使得...
1. **文件选择组件**:在VB应用程序中,你可以使用`OpenFileDialog`控件让用户选择要上传的本地文件。该控件允许用户浏览文件系统并选择一个或多个文件。例如: ```vb Dim openFileDialog1 As New OpenFileDialog ...
【小程序上传视频组件】是微信小程序中用于实现用户在应用内录制并上传视频的功能模块。在小程序开发中,为了提供丰富的交互体验,开发者通常需要集成这样的组件,让用户能够方便地分享自己的生活瞬间或者进行各种...
至于`uploadFile`,这可能是指一个包含实际文件上传示例的目录或者文件,它可能包含HTML、CSS、JavaScript代码,展示了如何使用这两个组件来实现文件上传功能。学习和理解这些示例代码,可以帮助开发者快速掌握文件...
在微信小程序中实现相册功能,通常包括图片选择器的使用、本地图片的获取、上传到服务器以及在列表中展示。开发者可以使用`wx.chooseImage`接口让用户选择图片,`wx.getImageInfo`获取图片信息,`wx.saveFile`保存...
在Struts2中实现文件上传,主要涉及到以下几个核心组件和步骤: 1. **配置Struts2**:首先,你需要在`struts.xml`配置文件中启用Struts2的文件上传支持。这通常通过添加`<constant>`标签并设置`struts.multipart....
总结,本示例“c++ gsoap webservice文件传送demo”展示了如何在Windows 7下,使用Visual C++和gSOAP库实现Web服务的文件传输。通过理解gSOAP的工作原理和API,以及掌握客户端和服务端的实现细节,你可以创建自己的...
"demo.php"和"UploadFile.php"是PHP脚本文件,它们负责接收前端Flash上传的文件,进行合法性检查,如文件类型、大小限制,然后将文件保存到服务器指定目录。PHP的`$_FILES`全局变量用于获取上传文件的信息,`move_...