jsp完整文件上传
用JSP实现拖拽上传文件和文件夹
![用JSP实现拖拽上传文件和文件夹](https://img.taocdn.com/s3/m/eb98d85afd4ffe4733687e21af45b307e971f968.png)
用JSP实现拖拽上传文件和文件夹JSP(JavaServer Pages)是一种动态网页技术,允许将Java代码嵌入到HTML页面中。
拖拽上传文件和文件夹是一种常见的网页交互功能,可以使用JSP来实现。
在实现拖拽上传文件和文件夹功能之前,首先需要了解一下拖拽上传的基本原理。
在HTML中,可以通过Drag and Drop API来获取拖拽的文件和文件夹。
然后,可以使用JavaScript将拖拽的文件和文件夹发送到服务器端,服务器端可以使用JSP来处理这些文件和文件夹。
以下是一个基本的实现拖拽上传文件的JSP页面的示例:```htmlpageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>拖拽上传文件</title><script>function handleDrop(event)event.preventDefault(; // 禁止浏览器打开文件var files = event.dataTransfer.files;//遍历上传的文件for (var i = 0; i < files.length; i++)var file = files[i];// 创建FormData对象,用于发送文件到服务器var formData = new FormData(;formData.append("file", file);// 创建一个XMLHttpRequest对象,发送文件到服务器var xhr = new XMLHttpRequest(;xhr.open("POST", "upload.jsp", true);xhr.onreadystatechange = functioif (xhr.readyState == 4 && xhr.status == 200)//上传成功console.log(xhr.responseText);}};xhr.send(formData);}}</script></head><body ondragover="event.preventDefault(;"ondrop="handleDrop(event);"><h1>拖拽上传文件</h1><p>将文件拖拽到此处上传</p></body></html>```当文件被拖拽到页面的时候,`handleDrop(`函数会被调用。
JSP获取上传图片路径
![JSP获取上传图片路径](https://img.taocdn.com/s3/m/4c86d4280722192e4536f6a4.png)
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title><script type="text/javascript">//FX获取文件路径方法function readFileFirefox(fileBrowser) {try {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");}catch (e) {alert('无法访问本地文件,由于浏览器安全设置。
为了克服这一点,请按照下列步骤操作:(1)在地址栏输入"about:config";(2) 右键点击并选择New->Boolean; (3) 输入"signed.applets.codebase_principal_support" (不含引号)作为一个新的首选项的名称;(4) 点击OK并试着重新加载文件');return;}var fileName=fileBrowser.value; //这一步就能得到客户端完整路径。
JSP 显示已上传文件的文件名
![JSP 显示已上传文件的文件名](https://img.taocdn.com/s3/m/52328100844769eae009edeb.png)
<html>
<head><title>显示已上传文件</title></head>
<body>
<%
String path = "d://upload/";//设置要显示的文件路径
</tr>
<%}%>
</table>
<hr>
</body>
</html>
上述代码中,首先实例化了一个File对象并通过File对象的filelist()方法获取目录的文件列表。然后通过for循环输出目录下的文件名称。执行上述代码,结果如图7-10所示。
图7-10显示文件
<%@ page pageEncoding="UTF-8" language="java" import="java.io.*,java.util.*"%>
(3)在showFileName.Jsp文件中输入以下内容并保存。
<%@ page pageEncoding="UTF-8" language="java" import="java.io.*,java.util.*"%>
File fp1 = new File(path);//实例化File对象
File filelist[]=fp1.listFiles();//获取文件列表
chap5_JSP中的文件操作
![chap5_JSP中的文件操作](https://img.taocdn.com/s3/m/5a436b42336c1eb91a375d35.png)
File类
File类的对象主要用来获取文件本身的一些 信息,例如文件所在的目录、文件的长度、 文件读写权限等,不涉及对文件的读写操作, 主要操作包括获取文件属性和管理目录 File对象的构造方法: File(String filename); File(String directoryPath, String filename ); File(File f, String filename);
11
FlieOutputStream类
构造函数: FileOutputStream(String name); FileOutputStream(File file); 参数name和file指定的文件称为输出流的目的地,通 过向输出流写入数据把信息送往目的地 一般是在try-catch语句的try块部分创建输出流对象, 在catch(捕获)部分检测并处理这个异常 void write(byte b[]); void write(byte b[], int off, int len);
17
RandomAccessFile类
RandomAccessFile流的指向既可以作为源,也可以 作为目的地 当需要对一个文件进行读写操作时,可以创建一个指 向该文件的RandomAccessFile流,这样既可以读也 可以写 RandomAccessFile(String name, String mode) RandomAccessFile(File file, String mode) 参数mode取r或rw,决定对流文件的访问权限 方法seek(long a)用来移动RandomAccessFile流指 向的文件的指针,参数a确定文件指针距离文件开头的 字节位置 方法getFilePointer()可以获取当前文件指针的位置
jsp上传图片完整代码
![jsp上传图片完整代码](https://img.taocdn.com/s3/m/91999a25e2bd960590c6777b.png)
String filename=String.valueOf(cal.getTimeInMillis());
saveurl=request.getRealPath("/")+url;
{
sma.setAllowedFilesList("jpg,gif");
sma.upload();
}catch(Exception e){
%>
<script language="jscript">
if(myf.isMissing()){
%>
<script language="jscript">
alert("请选择要上传的文件!")
window.location.href="upfile.jsp"
</script>
<html>
<head>
<title>My JSP 'uploadimage.jsp' starting page</title>
</head>
<body>
<%
SmartUpload sma=new SmartUpload();
out.println("图片上传成功!");
response.sendRedirect("showimg.jsp");
}
}
}catch(Exception e){
BootstrapFileupload文件上传
![BootstrapFileupload文件上传](https://img.taocdn.com/s3/m/0eb07cdb29ea81c758f5f61fb7360b4c2e3f2a12.png)
BootstrapFileupload⽂件上传1.在jsp中引⼊css与js⽂件, <link href="${ctx}/plugins/fileup/css/fileinput.css" media="all" rel="stylesheet" type="text/css"/>----css <script type="text/javascript" src="${ctx}/plugins/fileup/js/fileinput.js"/>----js <script src="${ctx}/plugins/fileup/js/fileinput_locale_th.js" type="text/javascript"></script>---- <script src="${ctx}/plugins/fileup/js/fileinput_locale_zh.js" type="text/javascript"></script>----字体2.在jsp中初始化⽂件上传控件:$(document).ready(function(){/* 输⼊框联想 */new CommunitySelect('searchCommunityName','${ctx}');$('#table').bootstrapTable({method:'post'});$("#edit").on("hidden.bs.modal", function(){$(this).removeData("bs.modal");});//⽂件上传$('#file-zh').fileinput({language: 'zh',maxFilesNum: 1,maxFileSize: 5000,uploadUrl: '${ctx}/mindex/importCityIndex.do', //请求的路径showUpload: true,showRemove: true,uploadAsync: true,showPreview : true,showCancel : false,allowedFileExtensions: ['xlsx', 'xls'] //限定⽂件的类型});});$("#file-zh").on("fileuploaded", function(event, data, previewId, index) {var result = data.response;if (result.success) {$("#uploadModal").modal("hide");$('#table').bootstrapTable("refresh");bootbox.alert(result.msg);} else {bootbox.alert(result.msg);}});3.在jsp中主体部分添加弹出窗体//上传的按钮<a href="#uploadModal" class="btn bg-blue" data-toggle="modal" data-preview-file-type="lsx/xlsx"><iclass="fa fa-download"></i> 上传</a><div class="modal fade" id="uploadModal" tabindex="-1" role="basic" aria-hidden="true"><form enctype="multipart/form-data" id="uploadForm" method="post"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"aria-hidden="true"></button><h4 class="modal-title">导⼊</h4><div class="modal-body"><div class="form-group"><input id="file-zh" name="xlsFile" type="file" multiple></div></div></div></div></div></form></div>4、在controller中添加handler@RequestMapping("importCityIndex")@ResponseBodypublic AjaxJson importCommunity(@RequestParam("xlsFile") MultipartFile file) throws IOException{ //file 得到要上传⽂件的输⼊流对象InputStream inputStream = file.getInputStream();}。
jspSmartUpload使用文档
![jspSmartUpload使用文档](https://img.taocdn.com/s3/m/668e0d40be1e650e52ea9989.png)
一、安装篇jspSmartUpload是由网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。
该组件有以下几个特点:1、使用简单。
在JSP文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载,方便。
2、能全程控制上传。
利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。
3、能对上传的文件在大小、类型等方面做出限制。
如此可以滤掉不符合要求的文件。
4、下载灵活。
仅写两行代码,就能把Web服务器变成文件服务器。
不管文件在Web服务器的目录下或在其它任何目录下,都可以利用jspSmartUpload进行下载。
5、能将文件上传到数据库中,也能将数据库中的数据下载下来。
这种功能针对的是MYSQL 数据库,因为不具有通用性,所以本文不准备举例介绍这种用法。
jspSmartUpload组件可以从网站上自由下载,压缩包的名字是jspSmartUpload.zip。
下载后,用WinZip或WinRAR将其解压到Tomcat的webapps目录下(本文以Tomcat服务器为例进行介绍)。
解压后,将webapps/jspsmartupload目录下的子目录Web-inf名字改为全大写的WEB-INF,这样一改jspSmartUpload类才能使用。
因为Tomcat对文件名大小写敏感,它要求Web应用程序相关的类所在目录为WEB-INF,且必须是大写。
接着重新启动Tomcat,这样就可以在JSP文件中使用jspSmartUpload组件了。
注意,按上述方法安装后,只有webapps/jspsmartupload目录下的程序可以使用jspSmartUpload组件,如果想让Tomcat服务器的所有Web应用程序都能用它,必须做如下工作:1.进入命令行状态,将目录切换到Tomcat的webapps/jspsmartupload/WEB-INF目录下。
第9章 JSP中的文件操作-JSP实用教程(第4版)-耿祥义-清华大学出版社
![第9章 JSP中的文件操作-JSP实用教程(第4版)-耿祥义-清华大学出版社](https://img.taocdn.com/s3/m/982348ba25c52cc58ad6be37.png)
9.2 RandomAccessFile类
需要对一个文件进行读写操作时,可以创建一个RandomAccessFile对象, RandomAccessFile对象可以读取文件的数据,也可以向文件写入数据。
RandomAccessFile类的两个构造方法:
• RandomAccessFile(String name,String mode) 参数name用来确定一个文件名, 参数mode取“r”(只读)或“rw”(可读写),决定对文件的访问权利。
example9_2.jsp
2.servlet Example9_2_Servlet.java
3.配置文件web.xml web.xml
9.3 文件上传
用户通过一个JSP页面上传文件给服务器时,form表单必须将ENCTYPE的属性值设成 multipart/form-data,并含有File类型的GUI组件。含有File类型GUI组件的form表单如 下所示:
例子9_3中,用户通过example9_3.jsp页面上传文本文件A.txt。
9.3 文件上传
例子9_3中,用户通过example9_3.jsp页面上传文本文件A.txt。 例子9_3 example9_3.jsp
example9_3_accept.jsp
例子9_4
例子9_4中,通过输入、输出流技术获取文件的内容,即去掉表单的信息。 根据不同用户的session对象互不相同这一特点,将用户提交的全部信息首 先保存成一个临时文件,该临时文件的名字是用户的session对象的id,然 后读取该临时文件的第2行,因为这一行中含有用户上传的文件的名字, 再获取第4行结束的位置,以及倒数第6行结束的位置,因为这两个位置之 间的内容是上传文件的内容,然后将这部分内容存入文件,该文件的名字 和用户上传的文件的名字保持一致,最后删除临时文件。 例子9_4的Web应用程序使用MVC模式(MVC的知识见第7章)。
jsp实现文件上传和下载
![jsp实现文件上传和下载](https://img.taocdn.com/s3/m/6d298a609b6648d7c1c746fb.png)
1 JSP文件上传简单实例1、index.html代码:<html><head><title>上传图片</title></head><body><form action="do_upload.jsp" method="post" enctype="multipart/form-data"><input type="file" name="Photo"><input type="submit" value="上传"></form></body></html>2、使用到的函数和类说明File类文件和目录路径名的抽象表示形式,File(parent,child)方法根据parent 抽象路径名和child 路径名字符串创建一个新File实例FileOutputStream文件输出流,InputStream输入流,将输入数据看成一根管道,可以形象的将输入流比喻成管道的入口,而输出流比喻成管道的出口。
read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个字节数组中。
read() 从此输入流中读取一个数据字节。
write(int b) 将指定字节写入此文件输出流,write(byte[] b, int off, int len) 将指定字节数组中从偏移量off 开始的len 个字节写入此文件输出流。
write(byte[] b) 将 b.length 个字节从指定字节数组写入此文件输出流中Random.readLine()逐行读入,Random.seek(int pos)设置到此文件开头测量到的文件指针偏移量,该位置发生下一个读取和写入操作,Random.getFilePointer()返回此文件当前偏移量,Random.readByte()此方法从该文件的当前文件指针开始读取第一个字节。
JSP上传图片到数据库的例子
![JSP上传图片到数据库的例子](https://img.taocdn.com/s3/m/80dc0a1ffc4ffe473368abbd.png)
现在想写个程序向数据库中插入图片路径(或则插入图片也可以)最好是插入图片的路径这样可插入任意大的图片...请高手指点一下思路..感激不尽1.通过显示层向数据库中插入图片2.在界面显示的时候是小图片(缩小过的)3.当点击查看大图片会显示图片(原来的大小)提供给你图片上传和显示的代码吧!希望对你有帮助我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。
大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的只要大家将连接数据库的参数改一下就可以了。
SQL> create table image(id int,content varchar(200),image blob);如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。
testimage.html文件内容如下:<HTML><HEAD><TITLE> Image File </TITLE><meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 "></HEAD><FORM METHOD=POST ACTION= "testimage.jsp "><INPUT TYPE= "text " NAME= "content "> <BR><INPUT TYPE= "file " NAME= "image "> <BR><INPUT TYPE= "submit "> </FORM><BODY></BODY></HTML>我们在Form的action里定义了一个动作testimage.jsp,它的内容如下:<%@ page contentType= "text/html;charset=gb2312 "%><%@ page import= "java.sql.* " %><%@ page import= "java.util.* "%><%@ page import= "java.text.* "%><%@ page import= "java.io.* "%><html><%Class.forName( "org.gjt.mm.mysql.Driver ").newInstance();String url= "jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding=885 9_1 ";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String content=request.getParameter( "content ");String filename=request.getParameter( "image ");FileInputStream str=new FileInputStream(filename);String sql= "insert into test(id,content,image) values(1,?,?) ";PreparedStatement pstmt=dbconn.conn.prepareStatement(sql);pstmt.setString(1,content);pstmt.setBinaryStream(2,str,str.available());pstmt.execute();out.println( "Success,You Have Insert an Image Successfully ");%>下面我写一个测试image输出的例子看我们上面程序写的对不对,testimageout.jsp的内容如下:<%@ page contentType= "text/html;charset=gb2312 "%><%@ page import= "java.sql.* " %><%@ page import= "java.util.* "%><%@ page import= "java.text.* "%><%@ page import= "java.io.* "%><html><body><%Class.forName( "org.gjt.mm.mysql.Driver ").newInstance();String url= "jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding=885 9_1 ";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String sql = "select image from test where id =1 ";Statement stmt=null;ResultSet rs=null;try{stmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLException e){}while(rs.next()) {res.setContentType( "image/jpeg ");ServletOutputStream sout = response.getOutputStream();InputStream in = rs.getBinaryStream(1);byte b[] = new byte[0x7a120];for(int i = in.read(b); i != -1;){sout.write(b);in.read(b);}sout.flush();sout.close();}}catch(Exception e){System.out.println(e);}%></body></html>你运行这个程序,你就会看到刚才你写入美丽的图片就会显示在你面前。
JSP技术实现上传压缩文件及文件相关信息并解压
![JSP技术实现上传压缩文件及文件相关信息并解压](https://img.taocdn.com/s3/m/b047a744dcccda38376baf1ffc4ffe473368fdd8.png)
JSP技术实现上传压缩文件及文件相关信息并解压
韩银锋
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2015(0)7
【摘要】使用JSP技术实现上传压缩文件包括文件及其描述信息,并在上传后将压缩文件解压到指定的文件夹中.
【总页数】2页(P18-19)
【作者】韩银锋
【作者单位】西安航空职业技术学院,西安710089
【正文语种】中文
【相关文献】
1.一种基于日志结构的自动压缩/解压缩文件系统的实现方案 [J], 甄成;张跃;张衍胜;梁金千
2.在JSP中实现文件上传下载的相关问题及改进方案 [J], 戴洋;陈海
3.信息技术教学系统中利用asp实现文件上传 [J], 董瑞杰
4.信息化管理实现学生电子文件上传解决方案 [J], 庄李平
5.在Windows XP中轻松实现压缩解压缩文件 [J], 张鹏
因版权原因,仅展示原文概要,查看原文内容请购买。
JSP上传文件到指定位置
![JSP上传文件到指定位置](https://img.taocdn.com/s3/m/554cf4462b160b4e767fcf1a.png)
JSP上传文件到指定位置复制上传文件,上传文件到服务器指定位置,注意,提交表单需要制定enctype 的类型。
具体代码如下:Servlet 代码:/** 直接取上传的File */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String targetPath = request.getRealPath(request.getContextPath());// 目标存储路径,服务器部署目录下request.setCharacterEncoding("UTF-8");try {DefaultFileItemFactory factory = new DefaultFileItemFactory();DiskFileUpload up = new DiskFileUpload(factory);List<FileItem> ls = up.parseRequest(request);for (FileItem file : ls) {if (file.isFormField()) { // 判断是文件还是文本信息System.out.println("表单参数名:" + file.getFieldName()+ ",表单参数值:" + file.getString("UTF-8"));} else {if (file.getName() != null && !file.getName()。
equals("")){ // 判断是否选择了文件File sFile = new File(file.getName());// 构造临时对象,此时文件暂存在服务器的内存当中File tFile = new File(targetPath, sFile.getName());if(tFile.exists()){System.out.println("同名文件已上传!");}else{//FileUtils.copyFileToDirectory(sFile, tFile);//直接复制并上传到服务器,自动生成上机目录,目录名称与上传文件的名称一致FileUtils.copyFile(sFile, tFile); // 直接复制并上传文件到服务器,直接在指定位置生成目标文件System.out.println("文件上传成功");if (tFile.isDirectory()) { // 删除上传文件FileUtils.deleteDirectory(tFile);} else if (tFile.isFile()) {tFile.delete();}System.out.println("文件删除成功");}} else {System.out.println("没有选择上传文件!");}}}} catch (FileUploadException e) {System.out.println("文件上传失败!");e.printStackTrace();}}Servlet配置:web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="java.sun./xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee java.sun./xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>MyServlet</servlet-name><servlet-class>test.MyServlet</servlet-class> </servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/servlet/MyServlet</url-pattern> </servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>Html页面:<body><form method="post" action="servlet/MyServlet" encType="multipart/form-data" ><font color="blue">可直接发布zip文件</font> <br /> 发布流程文件 :<input type="file" name="processDef" /> <input type="submit" value="部署"/></form></body>。
Jsp页面实现文件上传下载
![Jsp页面实现文件上传下载](https://img.taocdn.com/s3/m/93a95be86294dd88d0d26b7b.png)
Jsp页面实现文件上传下载第1 页jsp页面实现文件上传代码开发的过程见用TOMCAT作简单的jsp web开发名称:jsp页面上传类作者:SinNeRMail:vogoals[at]特点:1可以多文件上传;2返回上传后的文件名;3form表单中的其他参数也可以得到。
先贴上传类,JspFileUploadpackage com.vogoal.util;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Hashtable;import javax.servlet.ServletInputStream;import javax.servlet.http.HttpServletRequest;/** vogoalAPI 1.0*************************** by *mail:********************//*** JSP上传文件类** @author SinNeR* @version 1.0*/public class JspFileUpload {/** request对象*/private HttpServletRequest request = null;/** 上传文件的路径*/private String uploadPath = null;/** 每次读取得字节的大小*/private static int BUFSIZE = 1024 * 8;/** 存储参数的Hashtable */private Hashtable paramHt = new Hasptable();/** 存储上传的文件的文件名的ArrayList */private ArrayList updFileArr = new ArrayList();/*** 设定request对象。
关于JSP无组件文件上传的研究与实现
![关于JSP无组件文件上传的研究与实现](https://img.taocdn.com/s3/m/f7919004ba1aa8114431d948.png)
图 2 上 传 处 理 页 面
=__
一
2 解 决 方 案
( ) 示上传 页 面 u .s 。 1显 pj p
<% @ p g c ntn Ty e ae o et p = tx/ht If 叫 贝
0 引 言
J P是 在 传 统 的 网页 H M S T L中加 入 Jv 序 片 aa程 段 和 JP标 记而形成 的 网页 , S 是一 种混 合 编码 的 网页
设计技术 , 目前 已广泛 流行 。JP义件 上传 在 We S b应 用 中很 常 见 , 如 用 E m i给 同学 、 友 寄 张近 照 以 例 — al 朋 表问候 时就用 到 了此项功 能 。在实 际开发 中 , 常使 通 用 Srl 或 者 Jv B a ev t e aa en处理 上 传 的任 务 。在 JP中 S
掉表 单 的信息 , 是本文 要研究 和 解决 的问题 。 就
上传 文件有 多种 方式 , 本文 研究使 用 JP文件 实 现无 S
组件 文件 上传 。
隧 群的容 内I
她l 女 剩。 址
,
1 问题 的分 析 与 设 计
如图 1 示是 一个 文件 上传 的选择 视 图 , 所 选择 文
件后 , 击 “ 单 上传 ” 按钮 , 可完 成上传 操作 。
请选择要上侍的文件 。
山子地区
… … ‘ … ~
C n e t D s o t im : F r - a a n ● ” H — t o tn - lp s tt o m d t : j■・ s n i “
上俸
… … … . .
陈 晓华 田 刚 ,
( . 拉 玛 依 职 业技 术 学 院 信 息 工程 系, 疆 独 山子 8 3 0 ; . 山子 石 化总 厂 信 息 中心 , 疆 独 山 子 8 30 ) 1克 新 36 0 2 独 新 3 60 摘要 : 文件 上 传 的 实现 , 的 思路 是 获取 客 户端 的 请 求 流 , 总 然后 从 这 个输 入 流 中读 取 指 定 的 文件 , 把 这 个 文件 保 存 到 指 再
JSP上传文件
![JSP上传文件](https://img.taocdn.com/s3/m/b262f607e87101f69e319522.png)
UploadExample.jsp<%@ page contentType="text/html;charset=gb2312"%> <html><title><%= application.getServerInfo() %></title><body>上传文件程序应用示例<form action="doUpload.jsp" method="post"enctype="multipart/form-data"><%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传。
--%>请选择要上传的文件<input type="file" name="upfile" size="50"><input type="submit" value="提交"></form></body></html>doUpload.jsp<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.io.*"%><%@ page import="java.util.*"%><%@ page import="javax.servlet.*"%><%@ page import="javax.servlet.http.*"%><html><head><title>upFile</title></head><body bgcolor="#ffffff"><%//定义上载文件的最大字节int MAX_SIZE = 102400 * 102400;// 创建根路径的保存变量String rootPath;//声明文件读入类DataInputStream in = null;FileOutputStream fileOut = null;//取得客户端的网络地址String remoteAddr = request.getRemoteAddr();//获得服务器的名字String serverName = request.getServerName();//取得互联网程序的绝对地址String realPath = request.getRealPath(serverName);realPath =realPath.substring(0,stIndexOf("\\"));//创建文件的保存目录rootPath = realPath + "\\upload\\";//取得客户端上传的数据类型String contentType = request.getContentType();try{if(contentType.indexOf("multipart/form-data") >= 0){ //读入上传的数据in = new DataInputStream(request.getInputStream()); int formDataLength = request.getContentLength();if(formDataLength > MAX_SIZE){out.println("<P>上传的文件字节数不可以超过" + MAX_SIZE + "</p>");return;}//保存上传文件的数据byte dataBytes[] = new byte[formDataLength];int byteRead = 0;int totalBytesRead = 0;//上传的数据保存在byte数组while(totalBytesRead < formDataLength){byteRead =in.read(dataBytes,totalBytesRead,formDataLength); totalBytesRead += byteRead;}//根据byte数组创建字符串String file = new String(dataBytes);//out.println(file);//取得上传的数据的文件名String saveFile =file.substring(file.indexOf("filename=\"") + 10); saveFile = saveFile.substring(0,saveFile.indexOf("\n")); saveFile = saveFile.substring(stIndexOf("\\") + 1,saveFile.indexOf("\""));int lastIndex = stIndexOf("=");//取得数据的分隔字符串String boundary = contentType.substring(lastIndex + 1,contentType.length());//创建保存路径的文件名String fileName = rootPath + saveFile;//out.print(fileName);int pos;pos = file.indexOf("filename=\"");pos = file.indexOf("\n",pos) + 1;pos = file.indexOf("\n",pos) + 1;pos = file.indexOf("\n",pos) + 1;int boundaryLocation = file.indexOf(boundary,pos) - 4; //out.println(boundaryLocation);//取得文件数据的开始的位置int startPos = ((file.substring(0,pos)).getBytes()).length; //out.println(startPos);//取得文件数据的结束的位置int endPos =((file.substring(0,boundaryLocation)).getBytes()).length; //out.println(endPos);//检查上载文件是否存在File checkFile = new File(fileName);if(checkFile.exists()){out.println("<p>" + saveFile + "文件已经存在.</p>"); }//检查上载文件的目录是否存在File fileDir = new File(rootPath);if(!fileDir.exists()){fileDir.mkdirs();}//创建文件的写出类fileOut = new FileOutputStream(fileName);//保存文件的数据fileOut.write(dataBytes,startPos,(endPos - startPos)); fileOut.close();out.println(saveFile + "文件成功上载.</p>");}else{String content = request.getContentType();out.println("<p>上传的数据类型不是multipart/form-data</p>");}}catch(Exception ex){throw new ServletException(ex.getMessage());}%></body></html>。
在JSP中实现文件上传下载的相关问题及改进方案
![在JSP中实现文件上传下载的相关问题及改进方案](https://img.taocdn.com/s3/m/9058b5e60975f46527d3e1dd.png)
JP技术 , S 设计完成 B S / 模式的科 技综合信息管理系 统。在实际的设计过程中, 遇到了 文件上传及下载的
问题 , 于是查阅了许多相关 的资料 , 同时在 网络上参 与此类问题的讨论 , 从中发现基于 J S P平台的文件上 传下载存在诸多问题 , 缺乏系统的、 完善的解决办法。 本文提供笔者在应用 中遇到的问题及采取 的解决办 法, 并给出经过测试的部分关键源代码。
维普资讯
2 O 年第 1 O6 0期 文章编号 :0627 (06 1- 70 10-4 520 )0( .4  ̄
计 算 机 与 现 代 化 n l N Y IN AH A sy 且 U XA D I U A
总第 14期 3
在 JP中实现文件上传下载的相关 问题及 改进 方案 S
BS / 体系结构, 应用 网络协 同工作模 式 , 为科技项 目
的申报 、 评审 、 立项 、 进度跟踪 与资金管理 、 验收和评
奖等环节提供全方位的服务 , 实现合理化建议 和技改
项 目的在线 申报与鉴定 , 实现科技人员考核的业绩统 计和在线打分。并 由此实现科技信息内容管理与网 络发布, 在线生成科技管理业务报表 , 辅助领导决策 , 推进科技研发管理现代化。本系统的开发环境为: 服
先介绍一个 JP S 环境下用于文件一传下载的组件
S aU l d m r pod是 由 、v .pm r em 网站 m r p a。S aU l t o t a v、 i sa .o 、v s t
戴 洋, 陈 海
( 南昌大学信 息工程 学院, 江西 南 昌 30 9 3 2) 0 摘 要: 绍 J 环境下文件上传下载 的方法和工具 , 介 S P 对设计 实现 上传 文件 功能过程 中可能 遇到 的问题进行 分析 , 并结合
JSP jspSmartUpload上传组件
![JSP jspSmartUpload上传组件](https://img.taocdn.com/s3/m/a3da4af5aef8941ea76e05ed.png)
JSP jspSmartUpload上传组件jspSmartUpload是由网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。
该组件有以下几个特点:●使用简单。
在JSP文件中仅仅书写三五行JA V A代码就可以完成文件的上传或下载。
●能全程控制上传。
利用jspSmartUpload组件提供的对象及其操作方法,可以获得上传文件的全部信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。
●能对上传的文件在大小、类型等方面做出限制。
由此可以滤掉不符合要求的文件。
●下载灵活。
仅写两行代码,就能把Web服务器变成文件服务器。
不管文件在Web服务器的目录下或在其他任何目录下,都可以利用jspSmartUpload进行下载。
●能将文件上传到数据库中,也能将数据库中的数据下载下来。
但这种功能只针对MYSQL数据库,不具有通用性。
jspSmartUpload组件可以从网站上自由下载,压缩包的名字是jspSmartUpload.zip。
下载后,用WinZip或WinRAR将其解压到Tomcat的webapps 目录下。
因为Tomcat对文件名大小写敏感,所以解压后,将webapps/jspsmartupload 目录下的子目录Web-inf名字改为全大写的WEB-INF,这样修改后jspSmartUpload 类才能使用。
注意,按上述方法安装后,只有webapps/jspsmartupload目录下的程序可以使用jspSmartUpload组件,如果想让Tomcat服务器的所有Web应用程序都能用它,必须用压缩软件将com目录下的所有文件压缩成jspSmartUpload.zip,将jspSmartUpload.zip换名为jspSmartUpload.jar文件,然后将jspSmartUpload.jar拷贝到Tomcat的shared/lib目录下。
下面简要介绍jspSmartUpload的几个类。
用JSP/Servlet实现文件上传
![用JSP/Servlet实现文件上传](https://img.taocdn.com/s3/m/1ec85a1659eef8c75fbfb3b3.png)
[ 文献标识码 ]A [ 文章编号]17— 55 ( 0) 302—4 6383 2 7 0-07 0 0
文件上传在很多网站应用中是必不可少的,在 电子商务中上传商品图片 ,在音乐网站中上传流行 歌 曲……一个高效率的文件上传功能尤为重要 。笔 者 主要 介 绍 用 JP方 式 和 Srlt 式 实 现 的 两个 S eve 方 代码简短又高效率的文件上传功能 。在此基础上 , 可 以对文 件上传 功 能进行 进一 步 的完 善 ,如 限制上
1c” ; et
方法 生成 Srlt p tt a ev I uSr m类 的对象 ,即 I 中 的 en e / 0
输人流对象。sr e nu t a ev t pt r m类提供了 pbi i lI s e ul t cn
ra Ln (ye[ b ito , t e ) trw aa o ed ie b t 】 , n fi n ho s v . . nl j i
维普资讯
第 1 7卷
第3 期
梧 州 学 院 学 报
J U N L O WU H U U I E ST O R A F Z O N V R IY
No3 Vo . 7 - 11
20 0 7年 6月
J n2 0 u .0 7
用 JPSrl 实现 文件上传 S /eve t
④
第 一 行 是 “ onay ,表 示 数 据 开 始 ,第 二 budr”
行是对数据 内容的捕述 、 表单 中 fe i 控件 的名称以 l
・
2 ・ 7
维普资讯
2 0 年 第 3期 07
梧
州
学
院
学
报
第 1 7卷
及所 上 传 文件 的路 径 和文 件 名 ,第 三 行 是 文 件 类 型 ,第 四行 为一 空行 。从第 二行 数据 中取 出文件 扩 展 名后 ,可 以进行 上 传文件 类 型的控制 ,如 上传 图 片则 判 断 扩展 名 是 否 为 .f . g等格 式 ,上 传 音 g或J i P 频 文 件则 判 断扩 展 名 是 否为 .p m 3或 .m w a等 格 式 。 需 要注 意的 是 .如果 取 出的文 件路径 和 文件名 值 为
用JSP实现拖拽上传文件和文件夹
![用JSP实现拖拽上传文件和文件夹](https://img.taocdn.com/s3/m/4c00ce8b3169a4517623a305.png)
作者简介: 李文轩(1975-),男,广东惠州人,工程师,供职于中国人民银行惠州市中心支行,副科长,研究方向:运维管理、网络 技术。 收稿日期: 2019-05-09
51
Research|技术应用
2019年·第7期
栏目编辑:梁丽雯 E-mail:liven_01@
dragleave:当元素离开drop元素时触发。例如,设 置按钮字体颜色恢复黑色。
button.ondragleave=function( ){this.st yle. color="#000";};
d r o p:在目标 元素上释放 拖 拽 元素 时 触 发,在 这 里处理上传操作。
button.ondrop=drop; function drop(evt) { ev t .pr event Def au lt( );//阻 止系统 隐含的处 理 方式 var button=evt.target; //获得用户 选择释放的目标文件夹 ……//开始进行处理 }
四、文ቤተ መጻሕፍቲ ባይዱ夹的处理
以 上 介 绍的是 对 文件 的上传。C h r o m e 浏 览 器 还
支 持文件 夹的上传,其获得 拖 拽 对 象的方 法 是ev t . dataTransfer.items。该items同样是一个集合,其中的每 个元素都要通过调用专用方法才能获得文件或文件夹 项目。
var entry=items[i].webkitGetAsEntry(); 项 目的 类 型 可 通 过 其 属 性 进 行 判 断:对 于 文 件类型,ent r y.isFi le为真;对于文件 夹类型,ent r y. isDirectory为真。 其中,文件类型的entry并非“标准”的文件object, 不能直接使用f ileReader的readAsArrayBuffer(entry) 方法读取,必须定义一个回调函数,通过entr y的f ile 功 能去调用回调函数,在回调函数中才 能 获得“文 件”object。 var files = new Array();//读取到的文件项目, 等待上传 var items = evt.dataTransfer.items; if (items==undefined) Alert("您的浏览器不支 持文件夹上传"); for(var i = 0; i < items.length; i++){ var entry = items[i].webkitGetAsEntry(); if(!entry) break; if(entry.isFile){//如果是文件entry entr y.f i le(getAFi le); } else {//如果是文件夹entry
jspstruts1struts2上传文件
![jspstruts1struts2上传文件](https://img.taocdn.com/s3/m/ffa14618a31614791711cc7931b765ce05087af8.png)
一.在JSP环境中利用Commons-fileupload组件实现文件上传1.页面upload.jsp清单如下:Java代码1.<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2.3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5. <head>6. <title>The FileUpload Demo</title>7. </head>8.9. <body>10. <form action="UploadFile" method="post" enctype="multipart/form-data">11. <p><input type="text" name="fileinfo" value="">文件介绍</p>12. <p><input type="file" name="myfile" value="阅读文件"></p>13. <p><input type="submit" value="上传"></p>14. </form>15. </body>16.</html>注意:在上传表单中,既有一般文本域也有文件上传域2.FileUplaodServlet.java清单如下:Java代码1.package org.chris.fileupload;2.3.import java.io.File;4.import java.io.IOException;5.import java.util.Iterator;6.import java.util.List;7.8.import javax.servlet.ServletException;9.import javax.servlet.http.*;10.11.import org.apachemons.fileupload.FileItem;12.import org.apachemons.fileupload.FileItemFactory;13.import org.apachemons.fileupload.disk.DiskFileItemFactory;14.import org.apachemons.fileupload.servlet.ServletFileUpload;15.16.public class FileUplaodServlet extends HttpServlet {17.18. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {19. doPost(request, response);20. }21.22. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {23.24. request.setCharacterEncoding("UTF-8");25.26. //文件的上传部份27. boolean isMultipart = ServletFileUpload.isMultipartContent(request);28.29. if(isMultipart)30. {31. try {32. FileItemFactory factory = new DiskFileItemFactory();33. ServletFileUpload fileload = new ServletFileUpload(factory);34.35.// 设置最大文件尺寸,那个地址是4MB36. fileload.setSizeMax(4194304);37. List<FileItem> files = fileload.parseRequest(request);38. Iterator<FileItem> iterator = files.iterator();39. while(iterator.hasNext())40. {41. FileItem item = iterator.next();42. if(item.isFormField())43. {44. String name = item.getFieldName();45. String value = item.getString();46. System.out.println("表单域名为: " + name + "值为: " + value);47. }else48. {49. //取得取得文件名,此文件名包括途径50. String filename = item.getName();51. if(filename != null)52. {53. File file = new File(filename);54. //若是此文件存在55. if(file.exists()){56. File filetoserver = new File("d:\\upload\\",file.getName());57. item.write(filetoserver);58. System.out.println("文件 " + filetoserver.getName() + " 上传成功!!");59. }60. }61. }62. }63. } catch (Exception e) {64. System.out.println(e.getStackTrace());65. }66. }67. }68.}3.web.xml清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<web-app version="2.4"3. xmlns="java.sun/xml/ns/j2ee"4. xmlns:xsi="/2001/XMLSchema-instance"5. xsi:schemaLocation="java.sun/xml/ns/j2ee6. java.sun/xml/ns/j2ee/web-app_2_4.xsd">7.8. <servlet>9. <servlet-name>UploadFileServlet</servlet-name>10. <servlet-class>11. org.chris.fileupload.FileUplaodServlet12. </servlet-class>13. </servlet>14.15. <servlet-mapping>16. <servlet-name>UploadFileServlet</servlet-name>17. <url-pattern>/UploadFile</url-pattern>18. </servlet-mapping>19.20. <welcome-file-list>21. <welcome-file>/Index.jsp</welcome-file>22. </welcome-file-list>23.24.</web-app>二.在strut1.2中实现1.上传页面file.jsp 清单如下:Java代码1.<%@ page language="java" pageEncoding="ISO-8859-1"%>2.<%@ taglib uri="/struts/tags-bean" prefix="bean"%>3.<%@ taglib uri="/struts/tags-html" prefix="html"%>4.5.<html>6. <head>7. <title>JSP for FileForm form</title>8. </head>9. <body>10. <html:form action="/file" enctype="multipart/form-data">11. <html:file property="file1"></html:file>12. <html:submit/><html:cancel/>13. </html:form>14. </body>15.</html>2.FileAtion.java的清单如下:Java代码1./*2. * Generated by MyEclipse Struts3. * Template path: templates/java/JavaClass.vtl4. */5.package action;6.7.import java.io.*;8.9.import javax.servlet.http.HttpServletRequest;10.import javax.servlet.http.HttpServletResponse;11.import org.apache.struts.action.Action;12.import org.apache.struts.action.ActionForm;13.import org.apache.struts.action.ActionForward;14.import org.apache.struts.action.ActionMapping;15.import org.apache.struts.upload.FormFile;16.17.import form.FileForm;18.19./**20. * @author Chris21. * Creation date: 6-27-202022. *23. * XDoclet definition:24. * @struts.action path="/file" name="fileForm" input="/file.jsp"25. */26.public class FileAction extends Action {27. /*28. * Generated Methods29. */30.31. /**32. * Method execute33. * @param mapping34. * @param form35. * @param request36. * @param response37. * @return ActionForward38. */39. public ActionForward execute(ActionMapping mapping, ActionForm form,40. HttpServletRequest request, HttpServletResponse response) {41. FileForm fileForm = (FileForm) form;42. FormFile file1=fileForm.getFile1();43. if(file1!=null){44. //上传途径45. String dir=request.getSession(true).getServletContext().getRealPath("/upload");46. OutputStream fos=null;47. try {48. fos=new FileOutputStream(dir+"/"+file1.getFileName());49. fos.write(file1.getFileData(),0,file1.getFileSize());50. fos.flush();51. } catch (Exception e) {52. // TODO Auto-generated catch block53. e.printStackTrace();54. }finally{55. try{56. fos.close();57. }catch(Exception e){}58. }59. }60. //页面跳转61. return mapping.findForward("success");62. }63.}3.FileForm.java的清单如下:Java代码1.package form;2.3.import javax.servlet.http.HttpServletRequest;4.import org.apache.struts.action.ActionErrors;5.import org.apache.struts.action.ActionForm;6.import org.apache.struts.action.ActionMapping;7.import org.apache.struts.upload.FormFile;8.9./**10. * @author Chris11. * Creation date: 6-27-202012. *13. * XDoclet definition:14. * @struts.form name="fileForm"15. */16.public class FileForm extends ActionForm {17. /*18. * Generated Methods19. */20. private FormFile file1;21. /**22. * Method validate23. * @param mapping24. * @param request25. * @return ActionErrors26. */27. public ActionErrors validate(ActionMapping mapping,28. HttpServletRequest request) {29. // TODO Auto-generated method stub30. return null;31. }32.33. /**34. * Method reset35. * @param mapping36. * @param request37. */38. public void reset(ActionMapping mapping, HttpServletRequest request) {39. // TODO Auto-generated method stub40. }41.42. public FormFile getFile1() {43. return file1;44. }45.46. public void setFile1(FormFile file1) {47. this.file1 = file1;48. }49.}4.struts-config.xml的清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "/d tds/struts-config_1_2.dtd">3.4.<struts-config>5. <data-sources />6. <form-beans >7. <form-bean name="fileForm" type="form.FileForm" />8.9. </form-beans>10.11. <global-exceptions />12. <global-forwards />13. <action-mappings >14. <action15. attribute="fileForm"16. input="/file.jsp"17. name="fileForm"18. path="/file"19. type="action.FileAction"20. validate="false">21. <forward name="success" path="/file.jsp"></forward>22. </action>23.24. </action-mappings>25.26. <message-resources parameter="ApplicationResources" />27.</struts-config>5.web.xml代码清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<web-app xmlns="java.sun/xml/ns/j2ee" xmlns:xsi="w/2001/XMLSchema-instance" version="2.4" xsi:schemaLocatio n="java.sun/xml/ns/j2ee java.sun/xml/ns/j2ee/web-app_2_4.xsd">3. <servlet>4. <servlet-name>action</servlet-name>5. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>6. <init-param>7. <param-name>config</param-name>8. <param-value>/WEB-INF/struts-config.xml</param-value>9. </init-param>10. <init-param>11. <param-name>debug</param-name>12. <param-value>3</param-value>13. </init-param>14. <init-param>15. <param-name>detail</param-name>16. <param-value>3</param-value>17. </init-param>18. <load-on-startup>0</load-on-startup>19. </servlet>20. <servlet-mapping>21. <servlet-name>action</servlet-name>22. <url-pattern>*.do</url-pattern>23. </servlet-mapping>24.</web-app>三.在struts2中实现(以图片上传为例)1.FileUpload.jsp代码清单如下:Java代码1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>2.<%@ taglib prefix="s" uri="/struts-tags" %>3.<html>4. <head>5. <title>The FileUplaodDemo In Struts2</title>6. </head>7.8. <body>9. <s:form action="fileUpload.action" method="POST" enctype="multipart/form-data">10. <s:file name="myFile" label="MyFile" ></s:file>11. <s:textfield name="caption" label="Caption"></s:textfield>12. <s:submit label="提交"></s:submit>13. </s:form>14. </body>15.</html>2.ShowUpload.jsp的功能清单如下:Java代码1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>2.<%@ taglib prefix="s" uri="/struts-tags" %>3.<html>4. <head>5. <title>ShowUpload</title>6. </head>7.8. <body>9. <div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" >10. <img src ='UploadImages/<s:property value ="imageFileName"/> '/>11. <br />12. <s:property value ="caption"/>13. </div >14. </body>15.</html>3.FileUploadAction.java的代码清单如下:Java代码1.package com.chris;2.3.import java.io.*;4.import java.util.Date;5.6.import org.apache.struts2.ServletActionContext;7.8.9.import com.opensymphony.xwork2.ActionSupport;10.11.public class FileUploadAction extends ActionSupport{12.13. private static final long serialVersionUID = 572146812454l;14. private static final int BUFFER_SIZE = 16 * 1024 ;15.16. //注意,文件上传时<s:file/>同时与myFile,myFileContentType,myFileFileName绑定17. //因此同时要提供myFileContentType,myFileFileName的set方式18.19. private File myFile; //上传文件20. private String contentType;//上传文件类型21. private String fileName; //上传文件名22. private String imageFileName;23. private String caption;//文件说明,与页面属性绑定24.25. public void setMyFileContentType(String contentType) {26. System.out.println("contentType : " + contentType);27. this .contentType = contentType;28. }29.30. public void setMyFileFileName(String fileName) {31. System.out.println("FileName : " + fileName);32. this .fileName = fileName;33. }34.35. public void setMyFile(File myFile) {36. this .myFile = myFile;37. }38.39. public String getImageFileName() {40. return imageFileName;41. }42.43. public String getCaption() {44. return caption;45. }46.47. public void setCaption(String caption) {48. this .caption = caption;49. }50.51. private static void copy(File src, File dst) {52. try {53. InputStream in = null ;54. OutputStream out = null ;55. try {56. in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);57. out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);58. byte [] buffer = new byte [BUFFER_SIZE];59. while (in.read(buffer) > 0 ) {60. out.write(buffer);61. }62. } finally {63. if ( null != in) {64. in.close();65. }66. if ( null != out) {67. out.close();68. }69. }70. } catch (Exception e) {71. e.printStackTrace();72. }73. }74.75. private static String getExtention(String fileName) {76. int pos = stIndexOf(".");77. return fileName.substring(pos);78. }79.80.@Override81. public String execute() {82. imageFileName = new Date().getTime() + getExtention(fileName);83. File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/UploadImages" ) + "/" + imageFileN ame);84. copy(myFile, imageFile);85. return SUCCESS;86. }87.}注:现在仅为方便实现Action因此继承ActionSupport,并Overrider execute()方式在struts2中任何一个POJO都能够作为Action4.struts.xml清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8" ?>2.<!DOCTYPE struts PUBLIC3. "-//Apache Software Foundation//DTD Struts Configuration2.0//EN"4. "/dtds/struts-2.0.dtd">5.<struts>6. <package name="example" namespace="/" extends="struts-default">7. <action name="fileUpload" class="com.chris.FileUploadAction">8. <interceptor-ref name="fileUploadStack"/>9. <result>/ShowUpload.jsp</result>10. </action>11. </package>12.</struts>5.web.xml清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<web-app version="2.4"3. xmlns="java.sun/xml/ns/j2ee"4. xmlns:xsi="/2001/XMLSchema-instance"5. xsi:schemaLocation="java.sun/xml/ns/j2ee6. java.sun/xml/ns/j2ee/web-app_2_4.xsd">7. <filter >8. <filter-name > struts-cleanup </filter-name >9. <filter-class >10. org.apache.struts2.dispatcher.ActionContextCleanUp11. </filter-class >12. </filter >13. <filter-mapping >14. <filter-name > struts-cleanup </filter-name >15. <url-pattern > /* </url-pattern >16. </filter-mapping >17.18. <filter>19. <filter-name>struts2</filter-name>20. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>21. </filter>22. <filter-mapping>23. <filter-name>struts2</filter-name>24. <url-pattern>/*</url-pattern>25. </filter-mapping>26. <welcome-file-list>27. <welcome-file>Index.jsp</welcome-file>28. </welcome-file-list>29.30.</web-app>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jsp完整文件上传本文章这里为各位朋友免费提供一款jsp完整文件上传哦,如果你正在看这款文件上传代码的话不防进来看看吧,好了费话不说多了。
actionform,package tester.business.maitain;import org.apache.struts.action.*;import javax.servlet.http.*;import org.apache.struts.upload.*;public class MaintainFormextends ActionForm {/** private String p_title;private int post_index;private String issue_time;private String issue;private String p_content;private String p_accessory;private int p_id;private java.util.ArrayList post_indexOpts;*/private Trainplan trainPlan = new Trainplan();private org.apache.struts.upload.FormFile theFile1;private org.apache.struts.upload.FormFile theFile2;private org.apache.struts.upload.FormFile theFile3;public String getP_title() {return trainPlan.getP_title();}public void setP_title(String p_title) {trainPlan.setP_title(p_title);}public void setTrainPlan(Trainplan trainP) {this.trainPlan = trainP;}public Trainplan getTrainPlan() {return this.trainPlan;}public void setTheFile1(org.apache.struts.upload.FormFile theFile1) { this.theFile1 = theFile1;}public org.apache.struts.upload.FormFile getTheFile2() {return theFile2;}public void setTheFile2(org.apache.struts.upload.FormFile theFile2) { this.theFile2 = theFile2;}public org.apache.struts.upload.FormFile getTheFile3() {return theFile3;}public void setTheFile3(org.apache.struts.upload.FormFile theFile3) { this.theFile3 = theFile3;}public org.apache.struts.upload.FormFile getTheFile1() {return theFile1;}public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {/**@todo: finish this method, this is just the skeleton.*/return null;}public void reset(ActionMapping actionMapping,HttpServletRequest httpServletRequest) {}}与actionform相对应的jsp页面taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><%@ page contentType="text/html; charset=UTF-8" %><%request.setCharacterEncoding("gb2312");%><html:html locale="true"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../css/main.css" rel="stylesheet" type="text/css"><title>Add TrainPlan</title></head><body><table width="600" border="0" align="center" cellpadding="0" cellspacing="0" class="tabletoolbar"><tr><td class="tabletitletext"><div align="center" class="tabletitletext">Add TrainPlan</div></td></tr></table><!--DWLayoutTable--><html:form action="/maintainAction.do" method="post"enctype="multipart/form-data"><table width="600" border="0" align="center" cellpadding="7" cellspacing="0" class="InputFrameMain"><tr><td width="3%" nowrap> </td><td width="11%" nowrap><strong>Title</strong></td><td width="22%" nowrap><html:text maxlength="50" property="trainPlan.p_title" size="50"/></td><td width="11%" nowrap><div align="center"><strong>Issue Time</strong></div></td> <td width="22%" nowrap><html:text property="trainPlan.issue_time" size="10"/> <html:button value="Date" property="Submit"/></td><td width="10%" nowrap><div align="center"></div></td></tr><tr><td nowrap> </td><td nowrap><strong>Post Index</strong></td><td nowrap></td><td nowrap><div align="center"><strong>Issuer</strong></div></td><td nowrap><html:text maxlength="10" property="trainPlan.issuer" size="10"/></td><td height="30" colspan="8" nowrap><div align="center"></div> <div align="center"> <tr></tr></div></td></tr></table><br><table width="595" border="0" align="center" cellpadding="7" cellspacing="0" class="InputFrameMain">Train Plan Content<tr><td width="10%" nowrap><strong>TrainPlan Content</strong>:<spanclass="InputAreaCell"><strong><br></strong></span></td><td width="90%"><html:textarea cols="80" rows="5"property="trainPlan.p_content"></html:textarea></td></tr><tr><td height="30" colspan="8" nowrap><div align="center"></div> <div align="center"></div></td></tr></table><br><table width="610" border="0" align="center" cellpadding="7" cellspacing="0" class="InputFrameMain">Accessory<tr><td width="595"><span class="InputAreaCell"><strong>Accessory1<html:file maxlength="60" property="theFile1" size="60"/><br>Accessory2<html:file maxlength="60" property="theFile2" size="60"/><br>Accessory3<html:file maxlength="60" property="theFile3" size="60"/><br></strong></span></td></tr><tr><td height="30" colspan="8" nowrap><div align="center"></div> <div align="center"> <html:submit styleClass="button" value="提交" property="Submit" onclick="return RgTest()"/></div></td></tr></table></html:form></body></html:html>action页面,package tester.business.maitain;import tclcc.tester.util.Selector;import org.apache.struts.action.*;import javax.servlet.http.*;import java.util.*;import org.apache.struts.upload.FormFile;import java.io.*;public class MaintainActionextends Action {public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) {/**@todo: complete the business logic here, this is just a skeleton.*/ MaintainForm maintainForm = (MaintainForm) actionForm;TrainPlanDAO trainPDAO = new TrainPlanDAO();Trainplan trainPlan = new Trainplan();trainPlan = maintainForm.getTrainPlan();FormFile theFile = null;theFile = maintainForm.getTheFile1();String p_accessory;p_accessory = theFile.getFileName();try {InputStream stream = theFile.getInputStream(); //把文件读入String filePath = httpServletRequest.getRealPath("/"); //取当前系统路径ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream bos = new FileOutputStream(filePath + "sub" + "/" + theFile.getFileName()); //建立一个上传文件的输出流//System.out.println(filePath+"/"+file.getFileName());int bytesRead = 0;byte[] buffer = new byte[8192];while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {bos.write(buffer, 0, bytesRead); //将文件写入服务器}bos.close();stream.close();} catch (Exception e) {System.err.print(e);}try {trainPlan.setP_accessory(p_accessory);trainPDAO.addTrainPlan(trainPlan);//调用数据库插入方法System.out.println("success");} catch (Exception ex) {}httpServletRequest.setAttribute("trainPlain", trainPlan);return (actionMapping.findForward("trainplanCreated"));}}package tester.business.maitain;import tclcc.tester.business.maitain.Trainplan;import tclcc.tester.util.DBConn;import java.sql.*;import java.util.*;public class TrainPlanDAO {private DBConn dbconn = null;private Connection conn = null;private static final String ADD_TRAINPLAN="INSERT INTO KS_TRAINPLAN (p_id,p_title,issue_time,issuer,p_content,p_accessory) VALUES (lpad(SEQ_P_ID.nextVal,10,´0´),?,?,to_date(?,´yyyy-mm-dd´),?,?,?)"; private final static String UPDATE_TRAINPLAN="UPDATE KS_TRAINPLAN setp_id=?,p_title=?,post_index=?,issue_time=to_date(?,´yyyy-mm-dd´),issuer=?,p_con tent=?,p_accessory=? where p_id=?";* get a connection from a DB pool* @return Connection*/public TrainPlanDAO() {try {dbconn = new DBConn();conn = dbconn.getConnection();} catch (Exception ex) {ex.printStackTrace();}}/*** add a row into DB* @param examinee Examinee* @throws SQLException*/public void addTrainPlan(Trainplan trainPlan) throws SQLException { PreparedStatement ps tmt = null;try {pstmt = conn.prepareStatement(ADD_TRAINPLAN);pstmt.setString(1, trainPlan.getP_title());pstmt.setString(2, trainPlan.getIssue_time());pstmt.setString(3, trainPlan.getIssuer());pstmt.setString(4, trainPlan.getP_content());pstmt.setString(5, trainPlan.getP_accessory());pstmt.executeUpdate();} catch (SQLException ex) {ex.printStackTrace();} finally {try {pstmt.close();//conn.close();} catch (SQLException ex1) {}}}* remove a row from DB* @param trainPlan TrainPlan* @throws SQLException*/public void removeTrainPlan(Trainplan trainPlan) throws SQLException {this.removeTrainPlan(trainPlan.getP_id());}/*** remove a row from DB* @param p_id int* @throws SQLException*/public void removeTrainPlan(int p_id) throws SQLException {Statement stmt = null;try {stmt = conn.createStatement();stmt.execute("DELETE FROM ks_trainplan WHERE p_id=" + p_id);} catch (SQLException ex) {ex.printStackTrace();throw new SQLException("SQLExction on : TrainPlanDAO.removeExaminee()");} finally {try {conn.close();} catch (SQLException ex1) {ex1.printStackTrace();}}}/*** update a row* @param examinee Examinee* @throws SQLException*/public void updateTrainPlan(Trainplan trainPlan) throws SQLException { PreparedStatement pstmt = null;try {// UPDATE_TRAINPLAN = UPDATE_TRAINPLAN + "where p_id =" + trainPlan.getP_id(); //thecondition need modificationpstmt = conn.prepareStatement(UPDATE_TRAINPLAN);pstmt.setInt(1, trainPlan.getP_id());pstmt.setString(2, trainPlan.getP_title());pstmt.setInt(3, trainPlan.getPost_index());pstmt.setString(4, trainPlan.getIssue_time());pstmt.setString(5, trainPlan.getIssuer());pstmt.setString(6, trainPlan.getP_content());pstmt.setString(7, trainPlan.getP_accessory());pstmt.setInt(8,trainPlan.getP_id());pstmt.executeUpdate();} /*catch (SQLException ex) {ex.getStackTrace();throw new SQLException("SQLExction on : TrainPlanDAO.updateExaminee()"); } */catch(SQLException sqle){do{System.err.println("Exception occoured: Message:"+sqle.getMessage()); System.err.println("SQL state:"+sqle.getSQLState());System.err.println("Vendor code:"+sqle.getErrorCode()+" ---------------"); } while((sqle=sqle.getNextException())!=null);}finally {try {conn.close();} catch (SQLException ex1) {ex1.printStackTrace();}}}/*** get all record from DB* @throws SQLException* @return Collection*/public Collection getAll() throws SQLException {Statement stmt = null;ResultSet rs = null;Trainplan trainPlan = null;Collection list = null;try {stmt = conn.createStatement();rs = stmt.executeQuery("SELECT * FROM ks_trainplan"); list = new ArrayList();while (rs.next()) {trainPlan = new Trainplan();trainPlan.setP_id(rs.getInt("P_ID"));trainPlan.setP_title(rs.getString("P_TITLE")); trainPlan.setPost_index(rs.getInt("POST_INDEX")); trainPlan.setIssue_time(rs.getString("ISSUE_TIME")); trainPlan.setIssuer(rs.getString("ISSUER")); trainPlan.setP_content(rs.getString("P_CONTENT")); trainPlan.setP_accessory(rs.getString("P_ACCESSORY")); list.add(trainPlan);}} catch (SQLException ex) {} finally {try {conn.close();} catch (SQLException ex1) {ex1.printStackTrace();}return list;}}public static String toString(Trainplan trainPlan){ return trainPlan.getP_title();}/*** for test* @param args String[]*/}。