jsp影院后台管理系统中的影片上传功能的实现
时间: 2023-12-14 20:39:03 浏览: 36
首先需要明确的是,影片上传功能需要涉及到文件上传和文件存储两个方面。
1. 文件上传
在JSP中,可以使用form表单中的<input type="file">元素实现文件上传。具体实现方法如下:
在上传页面的表单中添加一个文件选择框:
```
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<label for="file">选择文件:</label>
<input type="file" name="file" id="file">
<input type="submit" name="submit" value="上传">
</form>
```
在服务器端的upload.jsp页面中,通过request对象获取上传的文件并保存到指定位置:
```
<%
String savePath = "D:/upload"; // 保存的目录
String fileName = ""; // 保存的文件名
File file = new File(savePath);
if (!file.exists() && !file.isDirectory()) {
System.out.println(savePath+"目录不存在,需要创建");
file.mkdir(); // 创建目录
}
// 上传文件
String contentType = request.getContentType();
if (contentType != null && contentType.indexOf("multipart/form-data") >= 0) {
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
fileName = item.getName();
// 处理上传的文件名,只保留文件名部分
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
OutputStream out = new FileOutputStream(new File(savePath, fileName));
InputStream in = item.getInputStream();
int len;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.close();
in.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
%>
```
2. 文件存储
影片上传之后需要将文件存储到服务器的指定目录中,并保存文件信息到数据库中。可以在upload.jsp页面中添加代码实现存储操作。具体实现方法如下:
在数据库中创建一个存储影片信息的表,例如film表,包含以下字段:
- film_id:影片ID,自增长
- film_name:影片名称
- film_path:影片存储路径
- film_time:上传时间
在upload.jsp页面中添加代码实现存储操作:
```
<%
String savePath = "D:/upload"; // 保存的目录
String fileName = ""; // 保存的文件名
File file = new File(savePath);
if (!file.exists() && !file.isDirectory()) {
System.out.println(savePath+"目录不存在,需要创建");
file.mkdir(); // 创建目录
}
// 上传文件
String contentType = request.getContentType();
if (contentType != null && contentType.indexOf("multipart/form-data") >= 0) {
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
fileName = item.getName();
// 处理上传的文件名,只保留文件名部分
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
OutputStream out = new FileOutputStream(new File(savePath, fileName));
InputStream in = item.getInputStream();
int len;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.close();
in.close();
// 将影片信息保存到数据库中
String filmName = request.getParameter("film_name");
String filmPath = savePath + "/" + fileName;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String filmTime = sdf.format(new Date());
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
String sql = "insert into film(film_name, film_path, film_time) values(?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, filmName);
ps.setString(2, filmPath);
ps.setString(3, filmTime);
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
%>
```
这样,影片上传功能就实现了。