String suffix = originalFilename.substring( originalFilename.lastIndexOf(".") + 1 );
时间: 2024-04-02 09:35:34 浏览: 161
这段代码的作用是获取文件名中的后缀名。具体来说,这段代码做了以下几件事情:
1. 调用 `lastIndexOf()` 方法获取文件名中最后一个点号(.)的位置,即获取文件名中的最后一个点号的索引值。
2. 在获取到的点号索引值上加1,得到文件名后缀名的起始位置。
3. 调用 `substring()` 方法截取文件名中从起始位置到结尾的字符串,即得到文件名的后缀名。
4. 将得到的后缀名赋值给 `suffix` 变量,以便后续使用。
相关问题
解释代码 String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
这行代码的作用是从文件名 `originalFilename` 中获取文件扩展名,即文件名中最后一个点号 "." 后面的字符串。具体来说,它使用了 Java 字符串的 `lastIndexOf()` 方法来查找最后一个点号的位置,然后使用 `substring()` 方法从这个位置开始截取字符串,得到文件的扩展名。注意,这里截取的字符串包括点号,所以需要将结果的第一个字符去掉,即使用了参数 1 来指定截取的起始位置。例如,如果 `originalFilename` 是 "myfile.txt",那么 `suffix` 就会被设置为 "txt"。
ssm在线视频播放的实现.
要实现SSM在线视频播放,需要以下步骤:
1. 在数据库中创建一个视频表,包含属性如下:视频ID、视频名称、视频描述、视频路径、上传时间等。
2. 编写视频上传代码,将视频文件上传到服务器上,并将视频相关信息保存到视频表中。
3. 在网页上显示视频列表,包括视频名称、上传时间等信息,用户可以点击视频名称进行播放。
4. 编写视频播放代码,通过视频路径获取视频文件,然后将视频文件返回给前端进行播放。
以下是具体实现步骤:
1. 创建视频表
```sql
CREATE TABLE `video` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '视频ID',
`name` varchar(255) NOT NULL COMMENT '视频名称',
`description` varchar(255) DEFAULT NULL COMMENT '视频描述',
`path` varchar(255) NOT NULL COMMENT '视频路径',
`upload_time` datetime NOT NULL COMMENT '上传时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='视频表';
```
2. 视频上传
在视频上传页面,需要有一个表单,用于上传视频文件和视频相关信息,例如视频名称、视频描述等。在后台代码中,需要使用MultipartHttpServletRequest来处理视频文件上传。
```java
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> upload(HttpServletRequest request) throws IOException {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile file = multipartRequest.getFile("file");
String name = multipartRequest.getParameter("name");
String description = multipartRequest.getParameter("description");
// 保存视频文件到服务器
String path = saveVideo(file);
// 保存视频信息到数据库
Video video = new Video();
video.setName(name);
video.setDescription(description);
video.setPath(path);
video.setUploadTime(new Date());
videoService.save(video);
Map<String, Object> result = new HashMap<>();
result.put("code", 0);
result.put("msg", "上传成功");
return result;
}
```
在保存视频文件到服务器时,可以将视频文件保存到指定的路径下,例如:/var/videos。
```java
private String saveVideo(MultipartFile file) throws IOException {
String originalFilename = file.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
String filename = UUID.randomUUID().toString() + suffix;
String path = "/var/videos/" + filename;
file.transferTo(new File(path));
return path;
}
```
3. 视频列表
在视频列表页面,需要从数据库中查询所有视频的信息,并在页面上显示出来。可以使用MyBatis进行数据库操作。
```java
@RequestMapping("/list")
public String list(Model model) {
List<Video> videos = videoService.findAll();
model.addAttribute("videos", videos);
return "video/list";
}
```
在页面上,可以使用thymeleaf模板引擎进行渲染,例如:
```html
<table>
<thead>
<tr>
<th>视频名称</th>
<th>上传时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr th:each="video : ${videos}">
<td th:text="${video.name}"></td>
<td th:text="${#dates.format(video.uploadTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
<td><a th:href="@{/video/play(id=${video.id})}">播放</a></td>
</tr>
</tbody>
</table>
```
4. 视频播放
在视频播放页面,需要根据视频ID从数据库中查询视频信息,并将视频文件返回给前端进行播放。可以使用SpringMVC的ResponseEntity来返回视频文件。
```java
@RequestMapping("/play")
public ResponseEntity<byte[]> play(Integer id) throws IOException {
Video video = videoService.findById(id);
File file = new File(video.getPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", file.getName());
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
}
```
在页面上,可以使用HTML5的video标签来进行视频播放,例如:
```html
<video src="/video/play?id=1" controls></video>
```
以上就是SSM在线视频播放的实现步骤,希望能对你有所帮助。
阅读全文