JSP程序设计实例教程第16讲 文件上传和-发送邮
用JSP实现拖拽上传文件和文件夹

用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实用教程:文件的上传

<% 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的同志都在实现文件上传到服务器这方面不是很了解,今天在这里我会帮助大家慢慢的实现这一功能。
准备工作: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实现文件上传和下载(代码及说明)

特点: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.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();//获取⽂件范围数据。
文件上传讲解

文件上传讲解文件上传是指将本地的文件上传至服务器的过程。
在Web开发中,常常需要实现文件上传功能,如用户头像、音频文件等的上传。
在前端开发中,使用POST方法来实现文件上传是最常见的方式之一实现文件上传功能常常涉及到两个关键环节:前端页面的设计和后端服务器的处理。
下面将详细讲解文件上传的实现过程。
一、前端页面的设计1.HTML表单在HTML中,可以使用<input type="file">元素来创建文件上传表单。
该元素可以让用户选择本地文件,并将其路径保存在表单的value属性中。
```html<form action="upload.php" method="post"enctype="multipart/form-data"><input type="file" name="file"><input type="submit" value="上传文件"></form>```需要注意的是,表单中的enctype属性必须设置为"multipart/form-data",以正确处理文件上传。
2. JavaScript代码为了提升用户体验,可以使用JavaScript进行文件路径的显示和预览。
```javascriptvar fileInput = document.querySelector('input[type="file"]');var fileNameDisplay = document.querySelector('#file-name-display');fileInput.addEventListener('change', function(event)fileNameDisplay.textContent =event.target.value.split('\\').pop(;});```以上代码通过监听文件选择框的change事件,获取用户选择的文件路径,然后通过字符串操作,截取文件名并显示在页面中。
JSP上传文件

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

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里面有没有你要的东西.。