下面是 “JSP实现快速上传文件的方法”的完整攻略。
1. 创建上传文件的表单
在HTML表单中包含一个 input[type=file] 元素用于选择要上传的文件,同时指定表单的 enctype 属性为 multipart/form-data,表示表单包含二进制数据。
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<label for="file">选择要上传的文件:</label>
<input type="file" name="file" id="file">
<br>
<input type="submit" name="submit" value="提交">
</form>
2. 上传文件处理的JSP代码
接下来,我们编写处理上传文件的 JSP 页面。在这个页面中,我们需要通过 request 获取上传的文件,然后进行处理。JSP 提供了一个内置对象request,来处理从表单中传递过来的数据。
<%@ page import="java.io.*, java.text.*, java.util.*"%>
<%
String savePath = "C:\\uploads\\"; // 设置文件保存路径
File fileSaveDir = new File(savePath);
if (!fileSaveDir.exists()) {
fileSaveDir.mkdir();
}
String fileName = "";
for (Part part : request.getParts()) {
// 遍历多部分文件
if (part.getName().equals("file")) {
fileName = new Date().getTime() + "_" + extractFileName(part); // 生成新文件名
part.write(savePath + fileName); // 将文件写入磁盘
}
}
out.print("上传成功!文件名:" + fileName);
// 获取上传文件名
private String extractFileName(Part part) {
String contentDisposition = part.getHeader("content-disposition");
String[] items = contentDisposition.split(";");
for (String item : items) {
if (item.trim().startsWith("filename")) {
return item.substring(item.indexOf("=") + 2, item.length() - 1);
}
}
return "";
}
%>
代码说明:
- 首先,我们设置文件的保存路径。在此例中,我们将文件保存在"C:\uploads"文件夹下,可以根据自己的需求修改。
- 接下来,我们遍历表单中的数据,并通过 extractFileName() 方法获取上传文件名,生成保存文件的新文件名,并将文件写入磁盘。
- 最后,输出上传成功的信息,包含新文件名。
示例1:上传单个文件
我们可以通过上面的代码来上传单个文件。
示例2:上传多个文件
JSP同样支持上传多个文件。我们可以在表单中添加 multiple="multiple" 属性,表示可以选择多个文件进行上传。
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<label for="file">选择要上传的文件:</label>
<input type="file" name="file" id="file" multiple="multiple">
<br>
<input type="submit" name="submit" value="提交">
</form>
在上传文件处理的 JSP 页面中,我们只需要遍历多部分文件即可。如下所示:
...
String[] fileNames = new String[10];
int i = 0;
for (Part part : request.getParts()) {
if (part.getName().startsWith("file")) {
String fileName = new Date().getTime() + "_" + extractFileName(part);
part.write(savePath + fileName);
fileNames[i] = fileName;
i++;
}
}
out.print("上传成功!文件名:" + Arrays.toString(fileNames));
...
代码说明:
- 我们可以通过part.getName() 方法获取对应的表单文件元素的name属性值, the startsWith() 方法判断name的值是否是以"file"开头,以此来确定是否是文件上传的表单元素。
- 我们在遍历中,每次生成一个新的文件名,并将文件写入到磁盘中。
- 最后,我们将每一个文件的上传成功信息都输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP实现快速上传文件的方法 - Python技术站