JSP(JavaServer Pages)文件上传是通过表单提交文件到服务器的一种常见操作。以下是一个简单的JSP文件上传代码示例,包括HTML表单和JSP处理脚本。
<!DOCTYPE html>
<html>
<head>
<title>File Upload Form</title>
</head>
<body>
<h1>Upload File to Server</h1>
<form action="upload.jsp" method="post" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
</body>
</html>
在这个表单中,enctype="multipart/form-data"
是必须的,因为它告诉服务器我们正在上传文件。
<%@ page import="java.io.*, java.util.*, javax.servlet.http.*" %>
<%@ page import="org.apache.commons.fileupload.*, org.apache.commons.fileupload.disk.*, org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.io.output.*" %>
<%
// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
out.println("No file uploaded");
return;
}
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// Parse the request to get file items.
List<FileItem> fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator<FileItem> i = fileItems.iterator();
while (i.hasNext()) {
FileItem fi = i.next();
if (!fi.isFormField()) {
String fieldName = fi.getFieldName();
String fileName = fi.getName();
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
// Write the file
if (fileName.lastIndexOf("\\") >= 0) {
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
}
File uploadedFile = new File(application.getRealPath("/uploads") + "/" + fileName);
fi.write(uploadedFile);
out.println("Uploaded Filename: " + fileName + "<br>");
}
}
} catch (Exception ex) {
out.println("There was an error: " + ex.getMessage());
}
%>
在这个JSP脚本中,我们使用了Apache Commons FileUpload库来处理文件上传。首先,我们检查请求是否为multipart类型,然后创建一个DiskFileItemFactory
来处理文件项。接着,我们解析请求并获取文件项列表,最后将文件写入服务器上的指定目录。
web.xml
中的配置或代码中的设置来解决。通过以上代码和说明,你应该能够实现基本的JSP文件上传功能,并了解相关的注意事项和问题解决方法。
领取专属 10元无门槛券
手把手带您无忧上云