Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk membangunkan pemain audio mudah menggunakan bahasa MySQL dan Go

Bagaimana untuk membangunkan pemain audio mudah menggunakan bahasa MySQL dan Go

王林
王林asal
2023-09-20 16:10:521403semak imbas

Bagaimana untuk membangunkan pemain audio mudah menggunakan bahasa MySQL dan Go

Cara menggunakan bahasa MySQL dan Go untuk membangunkan pemain audio ringkas

Pemain audio ialah salah satu aplikasi biasa kami Dengan menggunakan bahasa MySQL dan Go, kami boleh melaksanakan pemain audio ringkas dengan mudah. Artikel ini akan memperkenalkan cara menggunakan MySQL untuk menyimpan maklumat yang berkaitan dengan fail audio, dan menggunakan bahasa Go untuk melaksanakan fungsi muat naik, muat turun dan main balik fail audio.

Pertama, kita perlu mencipta pangkalan data untuk menyimpan maklumat tentang fail audio. Dengan mengandaikan bahawa pangkalan data kami dinamakan audio_player, kami perlu mencipta jadual bernama audios untuk menyimpan maklumat fail audio. Jadual ini mengandungi medan berikut: audio_player,我们需要创建一个名为audios的表来存储音频文件的信息。这个表包含以下字段:

  • id:音频文件的唯一标识符,使用自增主键。
  • name:音频文件的名称。
  • path:音频文件在服务器中的存储路径。

以下是创建audios表的MySQL代码:

CREATE TABLE `audios` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL,
  `path` VARCHAR(200) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

接下来,我们需要使用Go语言来实现音频文件的上传、下载和播放功能。首先,我们需要使用github.com/gin-gonic/gin包来实现一个基本的Web服务器。以下是实现一个简单的Web服务器的Go代码示例:

package main

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

func main() {
    router := gin.Default()

    router.Static("/static", "./static")

    router.Run(":8080")
}

在上面的代码中,我们使用router.Static()方法将/static路径指定为静态文件的路径,静态文件将会存储在服务器的./static目录下。

然后,我们需要使用github.com/jinzhu/gorm包来连接MySQL数据库,并实现音频文件的上传和下载功能。以下是实现音频文件上传和下载的Go代码示例:

package main

import (
    "fmt"
    "log"
    "net/http"
    "os"
    "path/filepath"
    "strconv"

    "github.com/gin-gonic/gin"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

type Audio struct {
    ID   int
    Name string
    Path string
}

func main() {
    db, err := gorm.Open("mysql", "username:password@/audio_player?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    db.AutoMigrate(&Audio{})

    router := gin.Default()

    router.Static("/static", "./static")

    router.POST("/upload", func(c *gin.Context) {
        file, err := c.FormFile("file")
        if err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
            return
        }

        filename := strconv.FormatInt(time.Now().UnixNano(), 10) + filepath.Ext(file.Filename)
        if err := c.SaveUploadedFile(file, "static/"+filename); err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
            return
        }

        audio := Audio{
            Name: file.Filename,
            Path: filename,
        }
        db.Create(&audio)

        c.String(http.StatusOK, fmt.Sprintf("File %s uploaded successfully", file.Filename))
    })

    router.GET("/download/:id", func(c *gin.Context) {
        id, err := strconv.Atoi(c.Param("id"))
        if err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("get id err: %s", err.Error()))
            return
        }

        var audio Audio
        if err := db.First(&audio, id).Error; err != nil {
            c.String(http.StatusInternalServerError, fmt.Sprintf("get audio err: %s", err.Error()))
            return
        }

        c.File("./static/" + audio.Path)
    })

    router.Run(":8080")
}

在上述代码中,我们创建了一个Audio结构体来表示音频文件的信息,在main函数中,我们通过gorm.Open()函数来连接MySQL数据库,并使用db.AutoMigrate()方法来自动创建audios表。

然后,我们定义了一个/upload的POST路由来实现音频文件的上传功能。在这个路由中,我们通过c.FormFile()方法获取上传的音频文件,并将其保存在服务器的static目录下,并将音频文件的相关信息插入到数据库中。

接着,我们定义了一个/download/:id的GET路由来实现音频文件的下载功能。在这个路由中,我们通过db.First()方法从数据库中获取音频文件的信息,并使用c.File()方法将音频文件发送给客户端进行下载。

最后,我们使用router.Run()

  • id: Pengecam unik untuk fail audio, menggunakan kunci utama auto-incrementing.
  • nama: Nama fail audio.
  • laluan: Laluan storan fail audio dalam pelayan.
Berikut ialah kod MySQL untuk mencipta jadual audio:

rrreee

Seterusnya, kita perlu menggunakan bahasa Go untuk melaksanakan fungsi muat naik, muat turun dan main balik fail audio. Mula-mula, kita perlu menggunakan pakej github.com/gin-gonic/gin untuk melaksanakan pelayan web asas. Berikut ialah contoh kod Go yang melaksanakan pelayan web ringkas:

rrreee

Dalam kod di atas, kami menggunakan kaedah router.Static() untuk menentukan /static laluan sebagai Laluan fail statik Fail statik akan disimpan dalam direktori ./static pelayan. 🎜🎜Kemudian, kita perlu menggunakan pakej github.com/jinzhu/gorm untuk menyambung ke pangkalan data MySQL dan melaksanakan fungsi muat naik dan muat turun fail audio. Berikut ialah contoh kod Go untuk memuat naik dan memuat turun fail audio: 🎜rrreee🎜Dalam kod di atas, kami mencipta struktur Audio untuk mewakili maklumat fail audio, dalam utamaDalam fungsi tersebut, kami menggunakan fungsi <code>gorm.Open() untuk menyambung ke pangkalan data MySQL dan menggunakan kaedah db.AutoMigrate() untuk mencipta audio permukaan. 🎜🎜Kemudian, kami menentukan laluan POST /muat naik untuk melaksanakan fungsi muat naik fail audio. Dalam laluan ini, kami memperoleh fail audio yang dimuat naik melalui kaedah c.FormFile(), menyimpannya dalam direktori static pelayan dan menyimpan maklumat berkaitan fail audio dimasukkan. ke dalam pangkalan data. 🎜🎜Seterusnya, kami menentukan laluan GET /download/:id untuk melaksanakan fungsi muat turun fail audio. Dalam laluan ini, kami memperoleh maklumat fail audio daripada pangkalan data melalui kaedah db.First() dan menggunakan kaedah c.File() untuk menghantar fail audio kepada muat turun klien melalui terminal. 🎜🎜Akhir sekali, kami menggunakan kaedah router.Run() untuk memulakan pelayan web dan mendengar permintaan daripada klien. 🎜🎜Melalui langkah di atas, kami berjaya membangunkan pemain audio ringkas menggunakan bahasa MySQL dan Go. Dalam pemain audio ini, kami boleh memuat naik fail audio dan memuat turun fail audio yang sepadan berdasarkan pengecam unik fail tersebut. Pada masa yang sama, kami juga boleh melaksanakan fungsi main balik fail audio melalui kaedah lain (seperti tag audio HTML5). 🎜🎜Saya harap artikel ini akan membantu anda memahami cara membangunkan pemain audio mudah menggunakan bahasa MySQL dan Go. Sila ambil perhatian bahawa dalam aplikasi praktikal, kami perlu mempertimbangkan lebih banyak isu keselamatan dan pengoptimuman prestasi. 🎜

Atas ialah kandungan terperinci Bagaimana untuk membangunkan pemain audio mudah menggunakan bahasa MySQL dan Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn