用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页面中使用输入流和输出流实现文件上传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的同志都在实现文件上传到服务器这方面不是很了解,今天在这里我会帮助大家慢慢的实现这一功能。
准备工作: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 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()此方法从该文件的当前文件指针开始读取第一个字节。
js实现文件上传功能后台使用MultipartFile

js实现文件上传功能后台使用MultipartFile在前端使用JavaScript实现文件上传功能,可以通过使用`FormData`对象来实现。
首先,我们需要创建一个HTML表单,并添加一个文件输入字段。
```html<form id="uploadForm"><input type="file" name="file" id="fileInput"><button type="submit">上传</button></form>```接下来,在JavaScript中,我们可以监听表单的提交事件,并在事件处理程序中获取文件数据,并将其发送到后台。
```javascriptdocument.getElementById('uploadForm').addEventListener('subm it', function(event)event.preventDefault(; // 阻止表单默认提交行为var fileInput = document.getElementById('fileInput');var file = fileInput.files[0];var formData = new FormData(;formData.append('file', file);//发送文件数据到后台var xhr = new XMLHttpRequest(;xhr.open('POST', '/upload'); // 替换成你的后台接口地址xhr.send(formData);});```在后台使用Spring框架时,可以使用`MultipartFile`来接收上传的文件。
手把手教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原始方式上传文件

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页面实现文件上传下载第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对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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>
运行方法,将这两个JSP文件放在同一路径下,运行UploadExample.jsp即可。