用jsp上传图片带代码
时间: 2024-02-13 14:05:19 浏览: 48
下面是一个用 JSP 实现上传图片的示例代码:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Upload Image</title>
</head>
<body>
<h1>Upload Image</h1>
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<label for="file">Select image to upload:</label>
<input type="file" name="file" id="file"><br><br>
<input type="submit" value="Upload" name="submit">
</form>
</body>
</html>
```
在上面的示例中,我们使用了一个 HTML 表单来上传图片,其中 enctype 属性被设置为 "multipart/form-data",这是必须的,因为我们要上传二进制文件。
当用户点击 "Upload" 按钮时,表单会将数据提交给一个名为 "upload.jsp" 的 JSP 页面。下面是 "upload.jsp" 页面的代码:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,javax.servlet.*,javax.servlet.http.*" %>
<%
String savePath = "C:/temp/"; // 保存上传文件的目录
int maxFileSize = 1024 * 1024 * 5; // 上传文件的最大大小
int maxMemSize = 1024 * 1024 * 5; // 内存中的最大大小
File file = null;
String fileName = "";
String contentType = request.getContentType();
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(maxMemSize);
factory.setRepository(new File("c:\\temp"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxFileSize);
try {
List<FileItem> fileItems = upload.parseRequest(request);
Iterator<FileItem> i = fileItems.iterator();
while (i.hasNext()) {
FileItem fi = i.next();
if (!fi.isFormField()) {
fileName = fi.getName();
String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
String[] allowedExtensions = { "jpg", "jpeg", "png", "gif" };
boolean allowed = Arrays.asList(allowedExtensions).contains(extension.toLowerCase());
if (!allowed) {
out.println("Invalid file type.");
return;
}
file = new File(savePath + fileName);
fi.write(file);
out.println("The file " + fileName + " has been uploaded successfully.");
}
}
} catch (Exception ex) {
out.println("Error: " + ex.getMessage());
}
} else {
out.println("Invalid request.");
}
%>
```
在上面的示例中,我们首先定义了一个保存上传文件的目录,然后定义了上传文件的最大大小和内存中的最大大小。接下来,我们使用 Apache Commons FileUpload 库来解析请求并获取上传的文件内容。
如果上传的内容是一个文件而不是表单字段,我们会检查文件的扩展名是否为 "jpg"、"jpeg"、"png" 或 "gif"。如果不是,我们会显示错误消息并退出。
最后,我们将上传的文件保存到指定的目录中,并显示成功消息。
注意:在实际应用中,您应该根据自己的需要修改文件保存目录、最大文件大小等参数。此外,还应该对上传的文件进行一些安全性检查,例如检查文件类型、大小、是否包含恶意代码等。
阅读全文