jsp上传文件获取文件名
时间: 2023-11-22 10:57:02 浏览: 100
在 JSP 中,可以使用如下代码获取上传文件的文件名:
```java
String fileName = "";
Part filePart = request.getPart("file");
if (filePart != null) {
fileName = filePart.getSubmittedFileName();
}
```
其中,`request.getPart("file")` 获取上传文件的 Part 对象,`filePart.getSubmittedFileName()` 获取上传文件的文件名。请注意,这段代码需要在 `<form>` 标签中设置 `enctype="multipart/form-data"`,以允许上传文件。
相关问题
struts1获取jsp上传文件
在 Struts1 中获取 JSP 上传文件,可以使用 Apache Commons FileUpload 组件。
首先,需要在 Struts1 配置文件中添加以下代码:
```xml
<!-- 配置文件上传处理器 -->
<plug-in className="org.apache.struts.upload.CommonsMultipartRequestHandler"/>
```
然后,在 Action 中使用以下代码来处理上传文件:
```java
import java.util.List;
import org.apache.struts.upload.FormFile;
import org.apache.struts.upload.MultipartRequestWrapper;
public class UploadAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// 获取 MultipartRequestWrapper 对象
MultipartRequestWrapper multipartRequest = (MultipartRequestWrapper) request;
// 获取上传的所有文件
List<FormFile> files = multipartRequest.getFiles();
// 处理上传的每个文件
for (FormFile file : files) {
// 获取文件名
String fileName = file.getFileName();
// 获取文件类型
String contentType = file.getContentType();
// 获取文件大小
long fileSize = file.getFileSize();
// 获取文件内容
byte[] fileContent = file.getFileData();
// 处理文件内容
// ...
}
// 处理完毕后返回成功页面
return mapping.findForward("success");
}
}
```
需要注意的是,上传文件的表单必须使用 `enctype="multipart/form-data"` 属性。
jsp上传文件代码实现
JSP上传文件可以使用以下代码实现:
1. HTML页面代码
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
```
2. JSP页面代码
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%
String savePath = "D:/upload"; // 上传文件存储目录
String tempPath = request.getServletContext().getRealPath("/WEB-INF/temp"); // 临时文件存储目录
File tempFile = new File(tempPath);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
String message = "";
try {
// 创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置工厂的缓冲区大小,这里是4KB
factory.setSizeThreshold(4 * 1024);
// 设置上传文件的临时目录
factory.setRepository(tempFile);
// 创建一个ServletFileUpload对象
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置上传文件的大小限制,这里是10MB
upload.setFileSizeMax(10 * 1024 * 1024);
// 解析request对象,并返回一个List集合
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
// 获取上传文件的名称
String fileName = item.getName();
// 获取上传文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 生成新的文件名
String newFileName = UUID.randomUUID().toString() + suffixName;
// 创建一个文件对象
File saveFile = new File(savePath, newFileName);
// 将上传文件保存到指定路径
item.write(saveFile);
message = "文件上传成功!";
}
}
} catch (Exception e) {
e.printStackTrace();
message = "文件上传失败!";
}
request.setAttribute("message", message);
request.getRequestDispatcher("/result.jsp").forward(request, response);
%>
```
3. result.jsp页面代码
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传文件结果</title>
</head>
<body>
<p>${message}</p>
</body>
</html>
```
以上代码实现了文件上传功能,将上传的文件保存到指定目录,并返回上传结果。注意要在web.xml中配置multipart-config元素,指定上传文件的大小限制和临时文件存储目录。
阅读全文