jsp页面实现图片上传功能
时间: 2024-03-24 18:30:46 浏览: 72
jsp上传图片
5星 · 资源好评率100%
要实现图片上传功能,需要使用JSP和Servlet技术。
1. 在JSP页面中,使用HTML的form表单,添加一个input标签,type属性为file,name属性为要上传的文件的名称。
```
<form action="uploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
```
2. 在Servlet中,获取上传的文件,首先需要判断form表单的enctype属性是否为multipart/form-data。然后,使用request.getPart()方法获取上传的文件。
```
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 检查enctype属性是否为multipart/form-data
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
response.getWriter().println("不支持的编码类型!");
return;
}
// 获取上传的文件
Part filePart = request.getPart("file");
String fileName = filePart.getSubmittedFileName();
InputStream fileContent = filePart.getInputStream();
// 对文件进行处理
// ...
}
```
3. 对于上传的文件,可以进行一些处理,例如保存到服务器的文件系统中,或者存储到数据库中。保存到文件系统中可以使用FileOutputStream类,存储到数据库中则需要使用JDBC技术。
```
// 保存到文件系统中
String filePath = "C:/uploads/" + fileName;
FileOutputStream outputStream = new FileOutputStream(filePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileContent.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
fileContent.close();
// 存储到数据库中
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
String sql = "INSERT INTO files (name, content) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, fileName);
ps.setBinaryStream(2, fileContent);
ps.executeUpdate();
ps.close();
conn.close();
```
4. 最后,在Servlet中返回一个响应,告诉用户上传成功。
```
response.getWriter().println("文件上传成功!");
```
阅读全文