JSP文件上传

合集下载

JSP实用教程:文件的上传

JSP实用教程:文件的上传
<%@ page contentType="text/html; charset=gb2312" import="com.jspsmart.upload.*,java.util.*,java.text.Simpl eDateFormat" %>
<% SmartUpload su = new SmartUpload();
catch (Exception e){ %> <script language=javascript>
alert("只允许上传.jpg/.gif/.png/.bmp类型图片文件");
window.location='upload_image.html'; </script>
<%

su.initialize(pageContext); // 上传初始化
try{


// 设定允许上传的文件(通过扩展名限制)
su.setAllowedFilesList("jpg,png,gif,bmp");
su.upload(); // 上传文件 su.save(“/upload”); // 设置保存目录 }
上传文件处理页面:new_upload.jsp
文件上传成功 文件长度:28376 文件名:9.jpg 文件扩展名:jpg
文件上传页面:upload_new.html
<form method="post" action="new_upload.jsp" enctype="multipart/form-data" > <input type="file" name="file"> <input type="submit" name="Submit" value="上传"> </form> 知识点:表单中enctype=“multipart/form-data” 的意思,是设置表单的MIME编码。默认情况,这个编 码格式是application/x-www-form-urlencoded,不能用 于文件上传;只有设置为multipart/form-data,才能完 整的传递文件数据

用JSP实现文件上传功能

用JSP实现文件上传功能

用JSP实现文件上传功能JSP(JavaServer Pages)是一种用于在服务器上生成动态网页的Java技术。

通过使用JSP,可以实现文件上传功能,使用户能够将文件上传到服务器。

一、前端页面设计:1.创建一个HTML表单,用于用户选择要上传的文件。

2. 指定表单的enctype属性为“multipart/form-data”,以支持文件上传。

3.添加一个提交按钮,用于触发文件上传的动作。

二、后端代码实现:1.在JSP页面上添加以下代码,用于接收和处理文件上传的请求:```jsp<%String uploadPath = "指定文件上传的目标路径"; // 指定文件上传的目标路径,例如:"/uploads/"DiskFileItemFactory factory = new DiskFileItemFactory(;ServletFileUpload upload = new ServletFileUpload(factory);tryList<FileItem> items = upload.parseRequest(request);for (FileItem item : items)if (!item.isFormField() { // 判断是否为上传文件String fileName = new File(item.getName().getName(;String filePath = uploadPath + File.separator + fileName;File storeFile = new File(filePath);item.write(storeFile); // 保存文件到服务器out.println("文件上传成功!");}}} catch (Exception e)out.println("文件上传失败!");e.printStackTrace(;%>```2. 创建一个文件夹用于存储上传的文件,例如在项目根目录下创建一个名为"uploads"的文件夹。

JSP使用输入流和输出流实现文件上传示例

JSP使用输入流和输出流实现文件上传示例

以下代码演示了在JSP页面中使用输入流和输出流实现文件上传1.创建upload.jsp页面:<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <html><head><title>一个简单的文件上传</title></head><body><form action="doUpload.jsp" method="post">标题:<input type="text" name="title"><br>文件位置:<input type="file" name="mfile"><br><input type="submit" value="提交"></form></body></html>2.创建doUpload.jsp页面<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GBK"%><html><head><title>My JSP 'doUpload.jsp' starting page</title></head><body><%request.setCharacterEncoding("GBK");String title = request.getParameter("title"); //获取页面提交的标题信息String myFile = request.getParameter("mfile"); //获取页面提交的文件int indexOf = stIndexOf("\\"); //获取最后一个“\”所在的索引位String fileName = myFile.substring(indexOf); //获取文件上传的文件名//创建输出流把指定的文件写入WEB工程的upload目录下(需要在WebRoot目录下创建upload目录)。

jsp之文件上传

jsp之文件上传

很多初学jsp的同志都在实现文件上传到服务器这方面不是很了解,今天在这里我会帮助大家慢慢的实现这一功能。

准备工作:1.到网上下载两个包第一个叫做commons-fileupload-1.2.1.jar第二个叫做commons-io-1.3.2.jar2. 建一个项目用来实现文件上传我创建的Web项目名为fileUpload,截图如下3.我们把从网上下载下来的包copy到WebRoot目录下Web-INF下的子目录lib目录里然后打开Referenced Libraries,你会看见两个包已经存在于里面了。

下面我们开始实现文件上传1. 首先我们创建一个名为uploadFile.jsp的页面,如下图:点击浏览,可以出现以下画面源代码如下:<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+ ":" +request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>实现文件上传到服务器</title><meta http-equiv="pragma"content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires"content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"> <meta http-equiv="description"content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="doFileUpload.jsp"method="post"enctype="multipart/form-data">文件:<input type="file"name="chooseFile"/></br>姓名:<input type="text"name="userName"/></br><input type="submit"value="提交"></form></body></html>注意:form表单里的enctype=”multipart/form-data”这一属性一定要写,这是用来标明此表单的类型是文件类型的。

Jsp文件上传笔记整理

Jsp文件上传笔记整理

String
basePath
=
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
fos.write(buffer, 0, len);
// 关闭资源文件操作 fos.close(); in.close(); // 删除临时文件 item.delete(); } } } catch (Exception e) { e.printStackTrace(); } }
} 四、web.xml 配置如下 <servlet>
jsp/servlet 文件上传整理
// 上传的文件存放路径为...\\WebRoot\\upload\\filename String dir = context.getRealPath("upload"); File file = new File(dir, filename); file.createNewFile();
// 获得流,读取数据写入文件 InputStream in = item.getInputStream(); FileOutputStream fos = new FileOutputStream(file);
int len; byte[] buffer = new byte[1024]; while ((len = in.read(buffer)) > 0)

JSP文件上传说明

JSP文件上传说明

要实现文件上载,我们必须先了解上载文件的HTTP请求。

下面这个简单的应用示范了如何上载文件以及把HTTP请求的原始数据写入文件。

用文本编辑器查看该文件即可了解请求的格式,在此基础上我们就可以提取出上载文件的名字、文件内容以及原本混合在一起的其他信息。

在这里我们写一个简单的html页面up.html,提供一个表单,用户从这里选择文件并把文件上载到服务器。

<html><head><title>文件上载</title></head><body><form action="upjsp.jsp" enctype="MULTIPART/FORM-DA TA" method=post><br />公司: <input type="text" name="company" /><br />选择要上载的文件 <input type="file" name="filename" /><br /><input type="submit" value="上载" /></form></body></html>注意,<form>标记有一个enctype属性,属性值是"MULTIPART/FORM-DA TA"。

还有个type为file的输入框是用来选择上传文件的。

表单的action属性值是upjsp.jsp,这是将请求发送给upjsp.jsp文件。

upjsp.jsp调用了名为UpBean的JavaBean。

程序如下:<jsp:useBean id="TheBean" scope="page" class="UpBean " /><%TheBean.doUpload(request);%>下面是UpBean的实现代码:import java.io.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletInputStream;public class UpBean {public void doUpload(HttpServletRequest request) throws IOException {PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("test.txt"))); ServletInputStream in = request.getInputStream();int i = in.read();while (i != -1) {pw.print((char) i);i = in.read();}pw.close();}}这个JavaBean把HttpServletRequest对象的表单原始数据写入test.txt文件.选择上传一个文本或者网页文件。

jsp实现文件上传和下载(代码及说明)

jsp实现文件上传和下载(代码及说明)

特点:1.可以多文件上传;2.返回上传后的文件名;3.form表单中的其他参数也可以得到。

先贴上传类,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* Auther SinNeR@* by * mail: vogoals@*//*** 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上传文件

手把手教Jsp上传文件(FileUpload+Servlet)所遇到的问题问题一:String fileName = fis.getName().substring(fis.getName().lastIndexOf(""""));//获得上传文件的文件名中""""应未“\\”,lastIndexOf()返回 String 对象中子字符串最后出现的位置。

stIndexOf(substring[, startindex])参数strObj必选项。

String 对象或文字。

substring必选项。

要在 String 对象内查找的子字符串。

startindex可选项。

该整数值指出在 String 对象内进行查找的开始索引位置。

假如省略,则查找从字符串的末尾开始。

说明lastIndexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。

假如没有找到子字符串,则返回 -1。

假如 startindex 是负数,则 startindex 被当作零。

假如它比最大字符位置索引还大,则它被当作最大的可能索引。

从右向左执行查找。

否则,该方法和 indexOf 相同。

下面的示例说明了 lastIndexOf 方法的用法:string filepath = "ALow\\K-1s\\2006\\arex1.txt";int i_s = stIndexOf("\\");//最后一个\\前面有14个字符,所以i_s=14string s = filepath.Substring(stIndexOf("\\") + 1);//从第15个字符开始,不包括第15个,取剩下的所有字符此处""""(“\\”)是指截取\及\后的字符,主要确定要传入的文件名,例\ ceshi1.bmp\为转义符\\转义结果为\同理String tmpPath = "f:""tmpdir";String savePath = "f:""updir";为String tmpPath = "f:\\tmpdir";//初始化上传文件的临时存放目录String savePath = "f:\\updir";//初始化上传文件后的保存目录问题二:页面的调用,此模式是先在tomcat中显示页面,再在页面内调用Servlet因此要保证路径正确我的项目名是upload我的jsp名为upload.jsp因此输入的路径为入http://localhost:8080/upload/upload.jsp问题三:页面action的写入upload.jsp sp中<form name="upform" action="UploadServlet" method="POST" enctype="multipart/form-data">问题四:Servlet的的配置Web.xml中<servlet><servlet-name>UploadServlet</servlet-name><servlet-class>UploadServlet</servlet-class></servlet><servlet-mapping><servlet-name>UploadServlet</servlet-name><url-pattern>/UploadServlet</url-pattern>问题五:处理方法为了安全性使用的是dopost方法问题六:Servlet的路径因为我的Web.xml<url-pattern>/UploadServlet</url-pattern>所以我若直接调用Servlet时路径为http://localhost:8080/upload/UploadServlet。

JSP上传文件到指定位置

JSP上传文件到指定位置

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原始方式上传文件
String url = ""; //图片地址
String fileName = "";
String state="SUCCESS";
String timeStrFileName = "";
while(fii.hasNext()){
FileItemStream fis = fii.next();
}
byte c [] = new byte[10];
int n = 0;
while((n=in.read(c))!=-1){
title = new String(c,0,n);
dff.setSizeThreshold(1024000);
ServletFileUpload sfu = new ServletFileUpload(dff);
FileItemIterator fii = sfu.getItemIterator(request);
String title = ""; //图片标题
//保存文件路径
String filePath = "uploadfiles";
String realPath = request.getRealPath("/")+filePath;
//判断路径是否存在,不存在则创建
File dir = new File(realPath);
if(!dir.isDirectory())
BufferedOutputStream output = new BufferedOutputStream(a);
Streams.copy(in, output, true);//开始把文件写到你指定的上传文件夹

Jsp页面实现文件上传下载

Jsp页面实现文件上传下载

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使用输入流和输出流实现文件上传示例

JSP使用输入流和输出流实现文件上传示例JSP文件上传示例代码如下:```jsp<!DOCTYPE html><html><head><title>文件上传示例</title></head><body><h1>文件上传示例</h1><%//处理文件上传请求if (request.getMethod(.equalsIgnoreCase("POST"))//设置保存上传文件的目录String uploadDir = "D:/uploads";File dir = new File(uploadDir);if (!dir.exists()dir.mkdir(;}//获取请求中的所有文件Collection<Part> parts = request.getParts(;//遍历所有文件for (Part part : parts)//获取文件名String fileName = extractFileName(part);//将文件保存到服务器的目录中part.write(uploadDir + File.separator + fileName);//显示文件名out.println("上传的文件名:" + fileName + "<br>");}}// 从 Part 获取文件名的方法private String extractFileName(Part part)String contentDisp = part.getHeader("content-disposition"); String[] items = contentDisp.split(";");for (String s : items)if (s.trim(.startsWith("filename"))return s.substring(s.indexOf("=") + 2, s.length(-1);}}return "";}%><!--文件上传表单--><form action="" method="post" enctype="multipart/form-data"> <input type="file" name="file1" /><br><input type="file" name="file2" /><br><input type="submit" value="上传" /></form></body></html>```上述示例中的代码实现了文件上传的功能。

JSP实现文件上传功能

JSP实现文件上传功能

JSP实现⽂件上传功能本⽂实例为⼤家分享了JSP实现⽂件上传功能的具体代码,供⼤家参考,具体内容如下⼀、准备部分需要fileupload.jar与io.jar包共同完成。

构建完成路径后可继续。

⼆、页⾯部分<form action="UploadServlet" method="post" enctype="multipart/form-data">学号:<input type="text" name="sno"/><br/>姓名:<input type="text" name="sname"/><br/>上传照⽚:<input type="file" name="spicture"/><br/><input type="submit" value="注册"/></form>注意:1.⽂件上传必须要使⽤post,以避免⽤get⽅法时传输总量超过搜索框所能承载最⼤字符数。

2.必须加⼊enctype="multipart.form-data"字段3.⽂件处需⽤“file”三、Servlet部分package webtest;import java.io.File;import java.io.IOException;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.FileItem;import mons.fileupload.FileItemFactory;import mons.fileupload.FileUploadBase;import mons.fileupload.FileUploadException;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;/*** Servlet implementation class UploadServlet*/@WebServlet("/UploadServlet")public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");// 请求编码处理,传输时response.setCharacterEncoding("utf-8");// 响应编码处理,传输时response.setContentType("utf-8");// 响应编码处理,显⽰时boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判断是否有entype="multipart/form-data"部分if (isMultipart) {try {FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);//设置上传时的内存缓冲区⼤⼩,超出时写⼊临时⽂件 10kb((DiskFileItemFactory) factory).setSizeThreshold(10240);//单位byte//设置临时⽂件⽬录,防⽌系统空间不⾜((DiskFileItemFactory) factory).setRepository(new File(request.getSession().getServletContext().getRealPath("Uploadtemp")));//动态获取Uploadtemp⽂件夹位于该项⽬中的位置 //控制上传单个⽂件的最⼤值 20kbupload.setSizeMax(20480);//单位byteList<FileItem> items = upload.parseRequest(request);// 解析form中的所有请求字段,并保存在item中Iterator<FileItem> iter = items.iterator();while (iter.hasNext()) {// 解析时⽆顺序,因此需根据名字查找FileItem item = iter.next();if (item.isFormField()) {//⾮⽂件数据String itemName = item.getFieldName();//获取⾮⽂件的范围数据名if (itemName.equals("sno")) {int sno = -1;sno = Integer.parseInt(item.getString("utf-8"));}else if (itemName.equals("sname")) {String sname = null;sname = item.getString("utf-8");}else {System.out.println("其他字段...");}} else {//⽂件上传String fileName = item.getName();//获取⽂件范围数据。

jsp的文件上传

jsp的文件上传

lushengdi手把手教Jsp上传文件(FileUpload+Servlet)转载于/read.php?tid=7130本教程以Apache组织的commons项目中的FileUpload项目做为jsp的文件上传组件,FileUpload项目完全尊守RFC1867规范中关于在HTTP request 中通过Post方法提交文件的规范,该项目性能稳定快速,易于部署和使用.本次教程以前端jsp + 后端servlet的方式上传文件,你也可以完全在jsp中实现而不用servlet. 在开始之前你要准备以下几个东西:1. commons-FileUpload 1.2 包下载地址:/commons/fileupload/2. commons-IO 1.3.1 包下载地址:/commons/io/3. Commons-BeanUtils 1.7 包下载地址:/commons/beanutils/有了上面这些东西我们就可以开始了====================================================================== =========1. 新建一个叫upload的WEB项目(我用的是Lomboz3.2开发环境)2. 把上面下载下来的包分别解压并拷贝*.jar的文件到上面那个项目的WEB-INF/lib目录中3.接下来我们要准备一份如下内容的upload.jsp文件,用来选择要上传的文件,<html><head><title>Jsp+Servlet upload file</title></head><body><form name="upform" action="UploadServlet" method="POST" enctype="multipart/form-data"><input type ="file" name="file1" id="file1"/><br/><input type ="file" name="file2" if="file2"/><br/><input type ="file" name="file3" id="file3"/><br/><input type="submit" value="Submit" /><br/><input type="reset" /></form></body></html>上面文件中有几个需要注意的地方就是1. action="UploadServlet" 必须和后面的web.xml配置文件中对servlet映射必须保持一致.2. method="POST" 这里必须为"POST"方式提交不能是"GET".3. enctype="multipart/form-data" 这里是要提交的内容格式,表示你要提交的是数据流,而不是普通的表单文本.4. file1,file2,file3表示你要3个文件一起上传,你也可以一次只上传一个文件.====================================================================== =============接下来我们要写一个与上面这个upload.jsp配套的servlet程序,就叫做UploadServlet.java吧以下是该servlet的详细代码:看上去有点长,不过并不复杂,很容易明白的.import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.DefaultFileItemFactory;import mons.fileupload.FileItemFactory;import mons.fileupload.FileItemIterator;import mons.fileupload.FileItemStream;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;import mons.fileupload.util.Streams;/*** Servlet implementation class for Servlet: UploadServlet**/public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {File tmpDir = null;//初始化上传文件的临时存放目录File saveDir = null;//初始化上传文件后的保存目录public UploadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try{if(ServletFileUpload.isMultipartContent(request)){DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象dff.setRepository(tmpDir);//指定上传文件的临时目录dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byteServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象sfu.setFileSizeMax(5000000);//指定单个上传文件的最大尺寸sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合while(fii.hasNext()){FileItemStream fis = fii.next();//从集合中获得一个文件流if(!fis.isFormField() && fis.getName().length()>0){//过滤掉表单中非文件域String fileName = fis.getName().substring(fis.getName().lastIndexOf(""""));//获得上传文件的文件名BufferedInputStream in = new BufferedInputStream(fis.openStream());//获得文件输入流BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(saveDir+fileName)));//获得文件输出流Streams.copy(in, out, true);//开始把文件写到你指定的上传文件夹}}response.getWriter().println("File upload successfully!!!");//终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗}}catch(Exception e){e.printStackTrace();}}public void init() throws ServletException {/* 对上传文件夹和临时文件夹进行初始化**/super.init();String tmpPath = "c:""tmpdir";String savePath = "c:""updir";tmpDir = new File(tmpPath);saveDir = new File(savePath);if(!tmpDir.isDirectory())tmpDir.mkdir();if(!saveDir.isDirectory())saveDir.mkdir();}}====================================================================== ==================================upload.jsp文件有了,配套的servlet也有了,现在最后剩下的就是怎么让它们配合工作了,接着我们把WEB-INF/web.xml文件请出来,并在该文件中加入以下内容:<servlet><servlet-name>UploadServlet</servlet-name><servlet-class>UploadServlet</servlet-class></servlet><servlet-mapping><servlet-name>UploadServlet</servlet-name><url-pattern>/UploadServlet</url-pattern></servlet-mapping>写好以后再点击"保存"====================================================================== ====================================把你的upload项目整个拷贝到tomcat的webapps目录下,启动tomcat.打开IE浏览器在地址栏中输入链接怎么样看到上传文件的输入框了吗? 什么,没有看到,出错了! 你仔细检查一下步骤有没有对. 好了,现在我们点击页面上的"浏览"按钮,找到我们要上传的文件,最后点击"Submit",太激动了,还不看一下你的c:"updir里面有没有你要的东西.。

JSP实现多个文件上传的两种方法

JSP实现多个文件上传的两种方法

JSP实现多个⽂件上传的两种⽅法JSP 实现多个⽂件上传的两种⽅法JSP实现⽂件上传的实现⽅式是这样的:使⽤ServletRequest类的getInputStream()⽅法获得⼀个客户端向服务器发出的数据流,然后处理这个数据流,从中分析得到⽂件上传中传递到服务器的各个参数和数据,然后将其中的⽂件数据存储为⼀个⽂件或插⼊到数据库中。

通常JSP页⾯中不处理⽂件的上传功能,⽽是把这些功能放到Servlet 或JavaBean中去实现。

使⽤Servlet完成⽂件上传的例⼦在其他JSP书籍中有所介绍,这⾥只介绍使⽤JeanBean是如何完成⽂件上传的。

JSP中实现⽂件的上传可以采⽤两种⽅式即采⽤HTTP协议和FTP协议实现,⼆者在传输的原理上存在很⼤的差异。

以下将结合源代码对它们的实现做简单介绍,相信读者会从中有所收获。

在JSP中使⽤JavaBean实现基于Web的⽂件上传功能⼀般需要三种⽂件结合完成。

这三种⽂件分别是提供界⾯的HTML页⾯⽂件、完成调⽤实现上传功能的JavaBean的JSP⽂件和实现JavaBean的Java的类⽂件。

1.采⽤HTTP协议实现多个⽂件的上传在过去的HTML页⾯中,表单不能实现⽂件的上传,这多少限制了⼀些⽹页的功能。

RFC1867规范(即HTML中实现基于表单的⽂件上传)对表单作出了扩展,增加了⼀个表单元素(input type=file)。

通过使⽤这个元素,浏览器会⾃动⽣成⼀个输⼊框和⼀个按钮,输⼊框可供⽤户填写本地的⽂件名和路径名,按钮可以让浏览器打开⼀个⽂件选择框供⽤户选择⽂件。

具体的表单实现如下:选择了⽂件后直接输⼊本地⽂件的绝对路径,表单的action属性值是*.jsp,这意味着请求(包括上载的⽂件)将发送给*.jsp⽂件。

在这个过程中实际上就实现了HTTP⽅式的⽂件上载。

⽂件从客户端到服务器的上传是由HTTP协议的通⽤⽹关界⾯(CGI)⽀持的。

这种上载⽅式要求浏览器和WEB服务器两⽅⾯都能够⽀持Rfc1867。

用JSP实现上传文件的两种方法

用JSP实现上传文件的两种方法

用JSP实现上传文件的两种方法以前用cos作文件上传但是对于文件上传后的改名还需要借助其他的工具摘录如下:在用Java开发企业器系统的使用特别是涉及到与办公相关的软件开发的时候文件的上传是客户经常要提到的要求因此有一套很好文件上传的解决办法也能方便大家在这一块的开发首先申明该文章是为了自己记录一备以后开发需要的时候不用手忙脚乱哈哈现在在国内用的非常多的一般是两种方法解决来解决文件上传cos jar + uploadbean jar + filemover jar 这个是用的非常普遍的原因是因为他操作方便是我们不必再去关注那些文件的输入和输出流使我们从底层的流中解脱出来UploadFile UploadBean MultipartFormDataRequest<%@ page contentType="text/;charset=gb " %> <head> <title>fbysss UploadBean 示例</title> <! meta equiv="Content Type" content="text/; charset=iso " > <! meta equiv="Content Type" content="text/; charset=gb " > </head> <FORM name=form METHOD="POST" ACTION="sssupload jsp" ENCTYPE="multipart/form data"> <input name=title type= "text" value="中文字"> <td >附件</td> <td > <input name=attach type=FILE id="attach" size=" " > </td> <input name=ok type= "submit" value="提交"> </form>读取表单页面sssgetdata jsp<!//======================================== ================================== //文件UploadBean上传实例//功能解决中文乱码完成文件上传并提供上传改名解决方案//作者fbysss //msn:jameslastchina@hotmail//======================================== ================================== > <%@ page contentType="text/;charset=GBK" %> <%@ page language="java" import=" jsp *** art upload *"%> <%@ page import="java text SimpleDateFormat"%> <%@ page import="java io File"%> <%@ page import="java util *"%> <%@ page import="javazoom upload *"%> <%@ page import="uploadutilities FileMover"%> <head> <meta equiv="Content Type" content="text/; charset=gb "> </head> <%request setCharacterEncoding("GBK");//设置编码格式就不用一个个转码了 FileMover fileMover = new FileMover();//你也可以使用自带的实例中jsp:useBean的形式UploadBean upBean = new UploadBean(); MultipartFormDataRequest mrequest = null; Hashtable files = null;if (MultipartFormDataRequest isMultipartFormData(request)) { mrequest = new MultipartFormDataRequest(request null * * MultipartFormDataRequest COSPARSER "GBK");//注意这里也要设置编码参数String sTt = mrequest getParameter("title"); out println("<br>Title 是 "+sTt +"<br>"); String sTt = new String(sTt getBytes("ISO ") "GBK"); out println("<br>Title 是 "+sTt +"<br>"); //这里用来测试title参数是否正确调试的时候加一句if (true)return;即可 files = mrequest getFiles(); }//获取修改前的文件名String sOldFileName =mrequest getParameter("oldfilename"); out println("sOldFileName:"+sOldFileName); String sWebRootPath = request getRealPath("/");//得到你的web应用的根String sPath=sWebRootPath+"attach"; int iFileCount = ; String sServerFileName=""; String sLocalFileName = ""; //文件获取if ( (files != null) || (!files isEmpty()) ) {iFileCount = files size(); UploadFile file = (UploadFile) filesget("attach"); sLocalFileName=file getFileName(); out println("sLocalFileName:"+sLocalFileName); int ii= sLocalFileName indexOf(" "); //取文件名的后缀String sExt = sLocalFileName substring(ii sLocalFileName length()); //得到不重复的文件名java util Date dt = new java util Date(System currentTimeMillis()); SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS"); sServerFileName= fmt format(dt); sServerFileName =sServerFileName + sExt; //如果不存在该目录则新建一个 File dir =new File(sPath); if (!dir exists()){ dir mkdirs(); } upBean setFolderstore(sPath);//设置要上传的目录upBean addUploadListener(fileMover);//增加filMover监听fileMover setNewfilename(sServerFileName);//设置服务器上的文件名upBean store(mrequest "attach");//上传out println("file path is "+sPath+"/"+sServerFileName); }%>Demo注意事项 cos jar uploadbean jar filemover jar这几个包必须有必备下载地址UploadBean FileMover 参考下载地址ChinesUpload例子参考了fbysss的一篇文章 apache struts upload FormFile Struts 的 apache struts upload FormFile类很方便不用自己写也不用写一个jsp调用jsp *** artupload就可以搞定选择上传文件页面 selfile jsp<%@ taglib uri="/WEB INF/struts tld" prefix=""%> <:> <:form action="/uploadsAction do" enctype="multipart/form data"> <:file property="theFile"/> <:submit/> </:form> </:> UpLoadAction java import java io *; import javax servlet *; import apache struts action *; import apache struts upload FormFile;/** *//** * <p>Title:UpLoadAction</p> * <p>Description: QRRSMMS </p> * <p>Copyright: Copyright (c) jiahansoft</p> *<p>Company: jiahansoft</p> * @author wanghw * @version */ public class UpLoadAction extends Action { public ActionForward execute(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response) throws Exception { if (form instanceof uploadsForm) {//如果form 是uploadsForm String encoding = request getCharacterEncoding(); if ((encoding != null) && (encoding equalsIgnoreCase("utf "))) { response setContentType("text/; charset=gb ");//如果没有指定编码编码格式为gb } UpLoadForm theForm = (UpLoadForm ) form; FormFile file = theForm getTheFile();//取得上传的文件try { InputStream stream = file getInputStream();//把文件读入String filePath = request getRealPath("/");//取当前系统路径ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream bos = new FileOutputStream(filePath + "/" + file getFileName());//建立一个上传文件的输出流//System out println(filePath+"/"+file getFileName()); int bytesRead = ; byte[] buffer = new byte[ ]; while ( (bytesRead = stream read(buffer )) != ) { bos write(buffer bytesRead);//将文件写入服务器} bos close(); stream close(); }catch(Exception e){ System err print(e); } //request setAttribute("dat" file getFileName()); return mapping findForward("display"); } return null; } }UpLoadForm javaimport javax servlet import apache struts action *; import apache struts upload *;/** *//** * <p>Title:UpLoadForm</p> * <p>Description: QRRSMMS </p> * <p>Copyright: Copyright (c) jiahansoft</p> * <p>Company: jiahansoft</p> * @author wanghw * @version */public class UpLoadForm extends ActionForm { public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = " apache struts webapp upload MaxLengthExceeded"; protected FormFile theFile; public FormFile getTheFile() { return theFile; } public void setTheFile(FormFile theFile) { this theFile = theFile; } public ActionErrors validate(ActionMapping mapping HttpServletRequest request) { ActionErrors errors = null; //has the maximum length been exceeded? Boolean maxLengthExceeded = (Boolean) request getAttribute(MultipartRequestHandlerATTRIBUTE_MAX_LENGTH_EXCEEDED); if ((maxLengthExceeded != null) && (maxLengthExceeded booleanValue())) { errors = new ActionErrors(); errors add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED new ActionError("maxLengthExceeded")); } return errors;} } //这是相对应的form 还有其他属性可以设置具体可以参考struts的上传例子struts config xmllishixinzhi/Article/program/Java/JSP/201311/20075。

jsp文件上传简单实例

jsp文件上传简单实例

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文件上传

也谈一下JSP文件上传在这里看到很多讨论文件上传的文章,觉得各有利敝,有些只限于上传文件,而不能同时取得文本字段值,尤其是上传多个文件比较少,现本人做这个上传文件的类最多可支持上传255个文件,同时可取得文本字段值,请各位高手指正.文件上传类:MoqUploadBean.javapackage net.jspcn.tool;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;/**** Title: 文件上传类* Description: 既能对文件进行上传,又能取得输入框的值,最多可同时上传255个文件* Copyright: Copyright (c) 2002* Company: Tekson* @author 莫琼* @version 1.0*/public class UploadBean {private String[] sourceFile = new String[255]; //源文件名private String[] suffix = new String[255]; //文件后缀名private String canSuffix = ".gif.jpg.jpeg.png"; //可上传的文件后缀名 private String objectPath = "c:/"; //目标文件目录private String[] objectFileName = new String[255]; //目标文件名private ServletInputStream sis = null; //输入流private String[] description = new String[255]; //描述状态private long size = 100 * 1024; //限制大小private int count = 0; //已传输文件数目private byte[] b = new byte[4096]; //字节流存放数组 private boolean successful = true;private Hashtable fields = new Hashtable();public UploadBean() {}//设置上传文件的后缀名public void setSuffix(String canSuffix) {this.canSuffix = canSuffix;}//设置文件保存路径public void setObjectPath(String objectPath) { this.objectPath = objectPath;}//设置文件保存路径public void setSize(long maxSize) {this.size = maxSize;}//文件上传处理程序public void setSourceFile(HttpServletRequest request) throws IOException { sis = request.getInputStream();int a = 0;int k = 0;String s = "";while ( (a = sis.readLine(b, 0, b.length)) != -1) {s = new String(b, 0, a);if ( (k = s.indexOf("filename="")) != -1) {// 取得文件数据s = s.substring(k + 10);k = s.indexOf(""");s = s.substring(0, k);sourceFile[count] = s;k = stIndexOf(".");suffix[count] = s.substring(k + 1);if (canTransfer(count)) {transferFile(count);}++count;} else if ( (k = s.indexOf("name="")) != -1) {// 普通表单输入元素,获取输入元素名字String fieldName = s.substring(k+6, s.length()-3);sis.readLine(b, 0, b.length);StringBuffer fieldValue = new StringBuffer(b.length);while ( (a = sis.readLine(b, 0, b.length)) != -1) {s = new String(b, 0, a-2);if ( (b[0] == 45) && (b[1] == 45) && (b[2] == 45) && (b[3] == 45) && (b[4] == 45)) {break;} else {fieldValue.append(s);}}fields.put(fieldName, fieldValue.toString());}if (!successful)break;}}//取得表单元素值public String getFieldValue(String fieldName) { if (fields == null || fieldName == null) {return null;}return (String) fields.get(fieldName); }//取得上传文件数public int getCount() {return count;}//取得目标路径public String getObjectPath() {return objectPath;}//取得源文件名public String[] getSourceFile() {return sourceFile;}//取得目标文件名public String[] getObjectFileName() { return objectFileName;}//取得上传状态描述public String[] getDescription() {return description;}//判断上传文件的类型private boolean canTransfer(int i) {suffix[i] = suffix[i].toLowerCase();//这个是用来传图片的,各位可以把后缀名改掉或者不要这个条件if (sourceFile[i].equals("") || (!(canSuffix.indexOf("."+suffix[i])>=0))) { description[i] = "ERR: File suffix is wrong.";return false;}else {return true;}//上传文件转换private void transferFile(int i) {String x = Long.toString(new java.util.Date().getTime());try {objectFileName[i] = x + "." + suffix[i];FileOutputStream out = new FileOutputStream(objectPath + objectFileNam e[i]);int a = 0;int k = 0;long hastransfered = 0; //标示已经传输的字节数String s = "";while ( (a = sis.readLine(b, 0, b.length)) != -1) {s = new String(b, 0, a);if ( (k = s.indexOf("Content-Type:")) != -1) {break;}}sis.readLine(b, 0, b.length);while ( (a = sis.readLine(b, 0, b.length)) != -1) {s = new String(b, 0, a);if ( (b[0] == 45) && (b[1] == 45) && (b[2] == 45) && (b[3] == 45) & & (b[4] == 45)) {break;}out.write(b, 0, a);hastransfered += a;if (hastransfered >= size) {description[count] = "ERR: The file " + sourceFile[count] + " is too large to transfer. The whole process is interrupted.";successful = false;break;}}if (successful) {description[count] = "Right: The file " + sourceFile[count] + " has been transfered successfully.";}out.close();if (!successful) {sis.close();File tmp = new File(objectPath + objectFileName[count]);tmp.delete();}}catch (IOException ioe) {description[i] = ioe.toString();}}public static void main(String[] args) {System.out.println("Test OK");}}文件上传调用:MoqUpload.jsp〈%@ page contentType="text/html; charset=GB2312" %> 〈html>〈head>〈title>文件上载〈/title>〈/head>〈body>〈form action="MoqUploadSubmit.jsp" enctype="MULTIPART/FORM-DATA" me thod="post">作者姓名:〈input type="text" name="Author" />〈br />公司名称:〈input type="text" name="Company" />〈br />文件描述:〈input type="text" name="Comment" />〈br />选择文件1:〈input type="file" name="filename1" /> 〈br />选择文件2:〈input type="file" name="filename2" /> 〈br />选择文件3:〈input type="file" name="filename3" /> 〈br />选择文件4:〈input type="file" name="filename4" /> 〈br />〈input type="submit" value="上载" />〈/form>〈/body>〈/html>文件上传提交:MoqUploadSubmit.jsp〈%@ page contentType="text/html;charset=gb2312"%>〈jsp:useBean id="fileBean" scope="page" class="net.moq.www.MoqUploadBea n" />〈%fileBean.setObjectPath("D:Temp");fileBean.setSize(10000*1024);fileBean.setSuffix(".gif.jpg.png.jpge.html.htm");fileBean.setSourceFile(request);String [] saSourceFile = fileBean.getSourceFile();String [] saObjectFile = fileBean.getObjectFileName(); String [] saDescription = fileBean.getDescription(); int iCount = fileBean.getCount();String sObjectPath = fileBean.getObjectPath();for(int i=0;i〈iCount;i++) {out.println("〈br>源始文件:");out.println(saSourceFile[i]);out.println("〈br>目标文件:");out.println(sObjectPath+saObjectFile[i]);out.println("〈br>上传说明:");out.println(saDescription[i]);out.println("〈br>");}out.println("〈br>作者:" + fileBean.getFieldValue("Author")); out.println("〈br>公司:" + fileBean.getFieldValue("Company")); out.println("〈br>说明:" + fileBean.getFieldValue("Comment")); %>。

jsp文件上传

jsp文件上传
//System.out.println(filePath+"/"+file.getFileName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {
<struts-config>
<form-beans>
<form-bean name="uploadsForm" type="UpLoadForm" />
</form-beans>
<action-mappings>
<action name="uploadsForm" type="UpLoadAction" path="/uploadsAction">
}
UpLoadForm theForm = (UpLoadForm ) form;
FormFile file = theForm.getTheFile();//取得上传的文件
try {
InputStream stream = file.getInputStream();//把文件读入
String filePath = request.getRealPath("/");//取当前系统路径
--------------------------------------------------------------------------------

Jsp文件上传

Jsp文件上传

JSP 文件上传JSP可以通过HTML的form表单上传文件到服务器。

文件类型可以是文本文件、二进制文件、图像文件等其他任何文档。

创建文件上传表单接下来我们使用HTML标签来创建文件上传表单,以下为要注意的点:∙form表单method属性必须设置为POST方法,不能使用GET 方法。

∙form表单enctype属性需要设置为multipart/form-data。

∙form表单action属性需要设置为提交到后台处理文件上传的jsp文件地址。

例如uploadFile.jsp程序文件用来处理上传的文件。

∙上传文件元素需要使用<input .../>标签,属性设置为type="file"。

如果需要上传多个文件,可以在<input .../>标签中设置不同的名称。

后台JSP处理脚本首先我们先定义文件上传后存储在服务上的位置,你可以将路径写在你的程序当中,或者我们可以在web.xml配置文件中通过设置context-param 元素来设置文件存储的目录,如下所示:<web-app>....<context-param><description>文件上传地址</description><param-name>file-upload</param-name><param-value>c:\apache-tomcat-5.5.29\webapps\data\</param-value></context-param>....</web-app>以下脚本文件UploadFile.jsp可以处理多个上传的文件,在使用该脚本前,我们需要注意以下几点:∙以下实例依赖FileUpload, 所以你需要在你的classpath中引入最新的commons-fileupload.x.x.jar包文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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>。

相关文档
最新文档