简单版本视频播放服务器V4,layui界面

简单版本视频播放服务器V4

前一个版本内容,可以查看

https://blog.csdn.net/wtt234/article/details/131759154

优化内容:

1.返回列表的优化,优化了原来返回空列表名称的问题

2.前端才有layui优化内容

后端:

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
	"path"
	"strings"

	"github.com/gin-gonic/gin"
)

// 这个代码在windows,linux中都是可以使用,这里重点关注的就是
//
//	videos := fmt.Sprintf("%s/%s", ml, "videos") 这样设置  windows linux都是可以使用
//
// 实现遍历程序的当前目录videos下的文件
func ListDir() ([]string, error) {
	ml, _ := os.Getwd()
	videos := fmt.Sprintf("%s/%s", ml, "videos")

	infos, err := ioutil.ReadDir(videos)
	if err != nil {
		return nil, err
	}
	//names := make([]string, len(infos))  这里容易有问题!!!
	names := make([]string, 0)
	for _, info := range infos {

		//获取文件名 确认以*MP4结尾的放入切片中
		filename := info.Name()
		//fmt.Printf("name:%v,kind:%T\n", filename, filename)
		把layui的包文件过滤掉,里面有css,js文件等
		//if filename == "layui" {
		//	continue
		//}
		//fmt.Printf("name%v,type:%T", filename, filename)

		isbool := strings.HasSuffix(filename, ".mp4")
		if isbool {
			//if filename
			//优化的地方,如果不优化,的话,返回的slcie中会有空“文件名”的出现
			//names[i] = info.Name()
			names = append(names, filename)

		}

	}
	fmt.Printf("%s==>%d", names, len(names))
	//fmt.Printf("is:===>%v", names)
	return names, nil
}

func ListDirllinux() ([]string, error) {
	ml, _ := os.Getwd()
	videos := fmt.Sprintf("%s//%s", ml, "videos")

	infos, err := ioutil.ReadDir(videos)
	if err != nil {
		return nil, err
	}
	names := make([]string, len(infos))
	for i, info := range infos {
		//获取文件名 确认以*MP4结尾的放入切片中
		filename := info.Name()
		//fmt.Println(filename)
		if strings.HasSuffix(filename, ".mp4") {

			//if filename
			names[i] = info.Name()
		}

	}
	return names, nil
}

// 文件下载功能实现
func DowFile(c *gin.Context) {
	//通过动态路由方式获取文件名,以实现下载不同文件的功能
	name := c.Param("name")
	//拼接路径,如果没有这一步,则默认在当前路径下寻找
	filename := path.Join("./videos", name)
	//响应一个文件
	c.File(filename)
	return
}

func main() {
	r := gin.Default()
	r.LoadHTMLGlob("templates/*")
	// 初始化默认静态资源
	r.StaticFS("/videos", http.Dir("./videos"))
	//windows 和linux下的路径稍微不同
	names, _ := ListDir()
	//names, _ := ListDirllinux()

	r.GET("/index", func(c *gin.Context) {

		//c.HTML(http.StatusOK, "index.html", gin.H{"names": names})
		//c.HTML(http.StatusOK, "index.html", gin.H{"names": names})
		c.HTML(http.StatusOK, "layui_index.html", gin.H{"names": names})
		//c.HTML(http.StatusOK, "index_lab.html", gin.H{"names": names})

	})
	r.GET("/GetFile/:name", DowFile)
	//r.Run()
	r.Run("0.0.0.0:8080")
}

前端:




  
  视频播放
  
  
  
  
  


  




-->

优化slice

简单版本视频播放服务器V4,layui界面_第1张图片

 界面优化:简单版本视频播放服务器V4,layui界面_第2张图片

 

你可能感兴趣的:(golang语言实战代码,layui,前端,javascript)