JSP实现文件上传功能

2023-12-07 0 560

本文实例为大家分享了JSP实现文件上传功能的具体代码,供大家参考,具体内容如下

一、准备部分

需要fileupload.jar与io.jar包共同完成。构建完成路径后可继续。

资源地址

JSP实现文件上传功能

二、页面部分

<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方法时传输总量超过搜索框所能承载最大字符数。

JSP实现文件上传功能

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 org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.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文件夹位于该项目中的位置
//控制上传单个文件的最大值 20kb
upload.setSizeMax(20480);//单位byte

List<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();//获取文件范围数据。路径及其名称
//判断文件类型
String ext = fileName.substring(fileName.indexOf(\”.\”)+1);
if(!(ext.equals(\”png\”)||ext.equals(\”gif\”)||ext.equals(\”jpg\”))) {
System.out.println(\”仅支持png.gif,jpg类型文件\”);
return ;
}
String path = request.getSession().getServletContext().getRealPath(\”Upload\”);//动态获取Upload文件夹位于该项目中的位置
File file = new File(path,fileName);
item.write(file);//定义上传路径,多为服务器路径
System.out.println(fileName+\”上传成功\”);
}
item.delete();//删除临时目录的文件
}
}
catch(FileUploadBase.SizeLimitExceededException e) {
System.out.println(\”最大20KB\”);
}
catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

注:

1.若该处标红且鼠标悬停后未找到包,则可以使用\”alt\”+\”/\”组合键选择下图第一个类来导入。

JSP实现文件上传功能

2.由于若Upload与Uploadtemp文件存放于tomcat对应的项目下,每一次通过eclipse更新代码,会将eclipse下代码直接覆盖,因而两个文件夹会直接被覆盖掉。可以在eclipse中新建,或通过绝对/相对路径于其他文件夹中来设置。

3.临时文件中的数据会保留很短的时间,添加sleep让程序休眠也许可以看到。即使无item.delete(),在整个会话完成后,临时文件也会被删除。

4.若报错无法找到文件,请尝试用浏览器若谷歌进行操作,而不是用Eclipse自带的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持悠久资源网。

您可能感兴趣的文章:

  • JS实现可恢复的文件上传示例详解
  • JavaScript进阶之前端文件上传和下载示例详解
  • JavaScript获取上传文件相关信息示例详解
  • 原生JS实现文件上传
  • nodejs 实现简单的文件上传功能(示例详解)
  • js前端上传文件缩略图技巧示例详解

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 JSP编程 JSP实现文件上传功能 https://www.u-9.cn/biancheng/jsp/126893.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务