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之文件上传相关推荐

  1. 如何使用Servlet,JSP和MySQL将文件上传到数据库

    本教程显示了如何实现Java Web应用程序(使用Servlet和JSP),该Java Web应用程序将文件上传到服务器并将文件保存到数据库. 该应用程序采用以下技术: Servlet 3.0+:从S ...

  2. jsp页面文件上传的详细教程

    0)导入文件上传的依赖 <dependency><groupId>commons-fileupload</groupId><artifactId>com ...

  3. plupload实现多文件上传

    之前很早的项目,使用bootstrap+jsp,需要多文件上传,周末没事翻开记录一下,了解一下,可以查看https://blog.csdn.net/happy_wu/article/details/5 ...

  4. 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 ...

  5. struts2的文件上传和文件下载

    实现使用Struts2文件上传和文件下载: 注意点: (1)对应表单的file1和私有成员变量的名称必须一致 <input type="file" name="fi ...

  6. Struts2 文件上传,下载,删除

    本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...

  7. java里面的文件上传与下载

    java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...

  8. java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...

    文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术 如题:文件信息的批量导入-- 项目中经常会遇到客户的一些单表信息的数据批量导入,也就是提供定制Excel表,再把Excel表中 ...

  9. java 图片上传_java web图片上传和文件上传实例

    本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...

最新文章

  1. “编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!
  2. 数据预处理之独热编码(OneHotEncoder)
  3. mysql的高级特性
  4. mongodb查询不带表名_原创 | MongoDB常用指令
  5. Vmware虚拟机中CentOS7与Docker安装图文教程
  6. MySQL中的读锁和写锁
  7. (90)FPGA比较器设计
  8. USB HID学习:一点开发记录
  9. 保密作战--在网络上隐藏自己
  10. 苹果 Mac 如何同时输出两个蓝牙喇叭或两副 AirPods 耳机?
  11. 2台电脑一根网线传文件_安卓端和Mac快速连接传文件
  12. Kaggle:Tabular Playground Series - May 2021
  13. QCC304x系列开发教程(实战篇) 之7.2 QCC3040之主副耳切换过程详解
  14. Win10 安装 JDK1.8 及配置环境变量
  15. electron 微信扫码登录(第三方登录)
  16. python Shapely使用指南详解
  17. JavaScript,js的亲戚计算器,中国亲戚关系计算器
  18. 华为路由器:ipsec技术
  19. 淘宝聚划算怎么做?大神导航,一个神奇的网站,从此开启大神之路!
  20. UE4 SetVisibility()和SetHiddenInGame()的比较

热门文章

  1. 第一部linux手机,手机界再掀风波,英特尔力争在下一部手机中抢得一席之地
  2. matlab simulink_简单五步实现 MATLAB/Simulink 锂电池建模
  3. ubuntu16.04安装gradle
  4. 致 Python 初学者们!
  5. 小程序如何实现tab切换,一部到位
  6. Python sys模块的使用
  7. 由dataview生成对应的datatable的方法
  8. Security Tutorials系列文章第七章:User-Based Authorization(上)
  9. html树 node节点定位,【Vue】element-ui Tree如何定位到一个节点,并高亮显示该节点?...
  10. CSDN-Markdown--基本语法功能效果