用Go语言搭建类似阅FM的阅读网站

来源:互联网 发布:万科荣华金域名城地址 编辑:程序博客网 时间:2024/04/27 15:14

这段时间在学习Go语言和Beego框架,写个简单网站练练手

功能很简单,从数据库中随机读取一篇文章并呈现给网站。

要解决的主要问题有:1.从文件夹中读取所有txt文件并存入MySql

             2. 从Mysql中随机读取article

        


      遍历文件夹,找出所有txt文件并去掉后缀和路径前缀之后作为文章的标题,再读取文件,并存入数据库 :

              

//将指定目录下所有特定类型的文件插入数据库中func InsertAll(dir, suffix string) {var title stringdb, err := sql.Open("mysql", "root:123@/myblog?charset=utf8")checkErr(err)length, fname := ReadAll(dir, suffix)i := 1var bct []byte //内容for {if i > length {break}bct, err = ioutil.ReadFile(fname[i-1])checkErr(err)title = Delsuffix(DelPrefix(fname[i-1]))stmt, errs := db.Prepare("insert blog set title=?,content=?")checkErr(errs)_, err2 := stmt.Exec(title, bct)checkErr(err2)i++}}//在dir下获取所有后缀为suffix的文件信息func ReadAll(dir, suffix string) (n int, result []string) {var length intlength = 0filepath.Walk(dir, func(path string, f os.FileInfo, err error) error {if f == nil {return err}if f.IsDir() {return nil}if IsType(path, suffix) {length++}return nil})re := make([]string, length)length = 0filepath.Walk(dir, func(path string, f os.FileInfo, err error) error {if f == nil {return err}if f.IsDir() {return nil}if IsType(path, suffix) {re[length] = pathlength++}return nil})return length, re}func IsType(filename, typ string) (re bool) {rs := []byte(filename)rl := len(rs)n := strings.LastIndex(filename, ".")tmp := string(rs[n+1 : rl])if tmp == typ {return true}return false}//去除文件名之前的路径func DelPrefix(origin string) (re string) {rs := []byte(origin)rl := len(rs)n := strings.LastIndex(origin, "\\")result := string(rs[n+1 : rl])return result}//去除后缀func Delsuffix(origin string) (re string) {rs := []byte(origin)n := strings.LastIndex(origin, ".")result := string(rs[0:n])return result}func checkErr(err error) {if err != nil {panic(err)}}
随机读取article:

func GetrandBlog() (bl Blog) { //随机从数据库中返回一个blogvar num inti := 0r := rand.New(rand.NewSource(time.Now().UnixNano()))db, err := sql.Open("mysql", "root:123@/myblog?charset=utf8")checkErr(err)db.QueryRow("select count(*) from blog").Scan(&num)arrnum := make([]int, num)rows, _ := db.Query("select id from blog")for rows.Next() {err = rows.Scan(&arrnum[i])i++}return One(arrnum[r.Intn(num)])}//根据id从数据库中读取text文件func One(id int) (bl Blog) {var re Blogdb, err := sql.Open("mysql", "root:123@/myblog?charset=utf8")checkErr(err)db.QueryRow("select title,content from blog where id=?",id).Scan(&re.Title, &re.Content)return re}
代码:https://github.com/Zuru2048/Go/tree/master/MyBlog
                                           

0 0
原创粉丝点击