JSP和Tag之文件上传
JSP和Tag之文件上传
jsp页面预览
Sc0545.jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.io.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="upload" %> <%--引入标记库 --%>
<html><body><a href="../index0545.jsp">返回首页</a>
<p>选择要上传的文件: <br>
<form action="" method="post" ENCTYPE="multipart/form-data">
<input type=FILE name="boy" size="45"><br/>
<input type="submit" name="boy" value="提交">
<upload:UpFile0545 subdir="WebRoot/image"/>
<%=fileName %> <%=message %><br>上传的效果:<br>
<image
src="C:/images/saveDir/<%=fileName %>" //路径最好写绝对路径,即为新建文件所在处
width=110 height=110/>
</form>
</body></html>
UpFile.tag代码
<%@tag pageEncoding="gb2312"%>
<%@tag import="java.io.*"%>
<%@attribute name="subdir" required="true"%>
<%@variable name-given="message" scope="AT_END"%>
<%@variable name-given="fileName" scope="AT_END"%>
<% jspContext.setAttribute("message","");String fileName=null;try{ //用客户的session对象的ID建立一个临时文件String tempFileName=(String)session.getId(); //取IDFile file=new File("C:/images");//路径为你想将新文件创建到的地方,注意为右斜线String parentDir=file.getAbsolutePath(); //取绝对路径File dir=new File(file,"saveDir"); dir.mkdir(); //建立临时文件f1File f1=new File(dir,tempFileName);FileOutputStream o=new FileOutputStream(f1);//将客户上传的全部信息存入f1InputStream in=request.getInputStream();byte b[]=new byte[10000];//一次读10000节int n;while((n=in.read(b))!=-1){ //读入失败的条件,行从0开始,=-1说明没有读到行o.write(b,0,n);}o.close();in.close();//读取临时文件f1,从中获取上传文件的名字和上传文件的内容RandomAccessFile randomRead=new RandomAccessFile(f1,"r");//读出f1的第二行,析取出上传文件的名字int second=1; //初值为1String secondLine=null;while(second<=2){secondLine=randomRead.readLine();second++;}//获取f1中第二行中“fileName”之后出现"\\"的位置//IE浏览器较老版本找“\\”,新版本需要换成“=”int position=secondLine.lastIndexOf("\\"); //从后往前找\\(或=),放入position//客户上传文件的名字是fileName=secondLine.substring(position+1,secondLine.length()-1);//取文件路径randomRead.seek(0); //定位到文件f1的开头//获取第四行Enter的位置long forthEndPosition=0; //第四行尾int forth=1;while((n=randomRead.readByte())!=-1&&(forth<=4)){ if(n=='\n'){ forthEndPosition=randomRead.getFilePointer();forth++; }} //根据用户上传的文件名字,将文件存入磁盘byte cc[]=fileName.getBytes("ISO-8859-1");fileName=new String(cc); //汉字信息处理File f2=new File(dir,fileName); //创建f2RandomAccessFile randomWrite=new RandomAccessFile(f2,"rw");//确定出文件f1中包含客户上传的文件的内容的最后位置,即倒数第六行randomRead.seek(randomRead.length()); //定位最后一个位置long endPosition=randomRead.getFilePointer(); //末尾给指针long mark=endPosition; //指针给markint j=1;while((mark>=0)&&(j<=6)){mark--;randomRead.seek(mark);n=randomRead.readByte();if(n=='\n'){ endPosition=randomRead.getFilePointer(); //倒数第六行末尾j++;}} //将randomread流指向文件f1的第四行结束的位置randomRead.seek(forthEndPosition);long startPoint=randomRead.getFilePointer();//从f1读出客户上传的文件存入f2(读取第四行结束位置和倒数第六行之间的内容)while(startPoint<endPosition-1){n=randomRead.readByte();randomWrite.write(n);startPoint=randomRead.getFilePointer();}randomWrite.close();randomRead.close();jspContext.setAttribute("message","上传成功");jspContext.setAttribute("fileName",fileName);f1.delete(); //删除临时文件}catch(Exception ee){jspContext.setAttribute("message","没有选择文件或上传失败");}
%>
效果图
如果要搬用代码,注意文件名,以代码中出现的为准,或者全重命名。
JSP和Tag之文件上传相关推荐
- 如何使用Servlet,JSP和MySQL将文件上传到数据库
本教程显示了如何实现Java Web应用程序(使用Servlet和JSP),该Java Web应用程序将文件上传到服务器并将文件保存到数据库. 该应用程序采用以下技术: Servlet 3.0+:从S ...
- jsp页面文件上传的详细教程
0)导入文件上传的依赖 <dependency><groupId>commons-fileupload</groupId><artifactId>com ...
- plupload实现多文件上传
之前很早的项目,使用bootstrap+jsp,需要多文件上传,周末没事翻开记录一下,了解一下,可以查看https://blog.csdn.net/happy_wu/article/details/5 ...
- atitit. 文件上传带进度条 atiUP 设计 java c# php
atitit. 文件上传带进度条atiUP设计java c# php 1. 设计要求 1 2. 原理and架构 1 3. ui 2 4. spring mvc 2 5. springMVC.xml 3 ...
- struts2的文件上传和文件下载
实现使用Struts2文件上传和文件下载: 注意点: (1)对应表单的file1和私有成员变量的名称必须一致 <input type="file" name="fi ...
- Struts2 文件上传,下载,删除
本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...
- java里面的文件上传与下载
java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...
- java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...
文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术 如题:文件信息的批量导入-- 项目中经常会遇到客户的一些单表信息的数据批量导入,也就是提供定制Excel表,再把Excel表中 ...
- java 图片上传_java web图片上传和文件上传实例
本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...
最新文章
- “编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!
- 数据预处理之独热编码(OneHotEncoder)
- mysql的高级特性
- mongodb查询不带表名_原创 | MongoDB常用指令
- Vmware虚拟机中CentOS7与Docker安装图文教程
- MySQL中的读锁和写锁
- (90)FPGA比较器设计
- USB HID学习:一点开发记录
- 保密作战--在网络上隐藏自己
- 苹果 Mac 如何同时输出两个蓝牙喇叭或两副 AirPods 耳机?
- 2台电脑一根网线传文件_安卓端和Mac快速连接传文件
- Kaggle:Tabular Playground Series - May 2021
- QCC304x系列开发教程(实战篇) 之7.2 QCC3040之主副耳切换过程详解
- Win10 安装 JDK1.8 及配置环境变量
- electron 微信扫码登录(第三方登录)
- python Shapely使用指南详解
- JavaScript,js的亲戚计算器,中国亲戚关系计算器
- 华为路由器:ipsec技术
- 淘宝聚划算怎么做?大神导航,一个神奇的网站,从此开启大神之路!
- UE4 SetVisibility()和SetHiddenInGame()的比较
热门文章
- 第一部linux手机,手机界再掀风波,英特尔力争在下一部手机中抢得一席之地
- matlab simulink_简单五步实现 MATLAB/Simulink 锂电池建模
- ubuntu16.04安装gradle
- 致 Python 初学者们!
- 小程序如何实现tab切换,一部到位
- Python sys模块的使用
- 由dataview生成对应的datatable的方法
- Security Tutorials系列文章第七章:User-Based Authorization(上)
- html树 node节点定位,【Vue】element-ui Tree如何定位到一个节点,并高亮显示该节点?...
- CSDN-Markdown--基本语法功能效果