Maison  >  Article  >  base de données  >  Comment développer un lecteur audio simple en utilisant le langage MySQL et Go

Comment développer un lecteur audio simple en utilisant le langage MySQL et Go

王林
王林original
2023-09-20 16:10:521336parcourir

Comment développer un lecteur audio simple en utilisant le langage MySQL et Go

Comment utiliser le langage MySQL et Go pour développer un lecteur audio simple

Le lecteur audio est l'une de nos applications courantes En utilisant le langage MySQL et Go, nous pouvons facilement implémenter un lecteur audio simple. Cet article expliquera comment utiliser MySQL pour stocker des informations relatives aux fichiers audio et utiliser le langage Go pour implémenter les fonctions de téléchargement, de téléchargement et de lecture des fichiers audio.

Tout d'abord, nous devons créer une base de données pour stocker des informations sur les fichiers audio. En supposant que notre base de données s'appelle audio_player, nous devons créer une table nommée audios pour stocker les informations sur les fichiers audio. Ce tableau contient les champs suivants : 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 : Un identifiant unique pour le fichier audio, utilisant une clé primaire à incrémentation automatique.
  • name : Le nom du fichier audio.
  • path : Le chemin de stockage des fichiers audio sur le serveur.
Voici le code MySQL pour créer la table audios :

rrreee

Ensuite, nous devons utiliser le langage Go pour implémenter les fonctions de téléchargement, de téléchargement et de lecture de fichiers audio. Tout d'abord, nous devons utiliser le package github.com/gin-gonic/gin pour implémenter un serveur Web de base. Voici un exemple de code Go qui implémente un serveur Web simple :

rrreee

Dans le code ci-dessus, nous utilisons la méthode router.Static() pour spécifier le /static path as Le chemin du fichier statique Le fichier statique sera stocké dans le répertoire ./static du serveur. 🎜🎜Ensuite, nous devons utiliser le package github.com/jinzhu/gorm pour nous connecter à la base de données MySQL et implémenter les fonctions de téléchargement et de téléchargement de fichiers audio. Voici un exemple de code Go pour télécharger et télécharger des fichiers audio : 🎜rrreee🎜Dans le code ci-dessus, nous avons créé une structure Audio pour représenter les informations du fichier audio, dans mainDans la fonction, nous utilisons la fonction <code>gorm.Open() pour nous connecter à la base de données MySQL, et utilisons la méthode db.AutoMigrate() pour créer automatiquement audios. 🎜🎜Ensuite, nous avons défini une route POST de /upload pour implémenter la fonction de téléchargement de fichiers audio. Dans cette voie, nous obtenons le fichier audio téléchargé via la méthode c.FormFile(), l'enregistrons dans le répertoire static du serveur et stockons les informations associées au fichier audio. dans la base de données. 🎜🎜Ensuite, nous définissons une route GET de /download/:id pour implémenter la fonction de téléchargement de fichiers audio. Dans cette voie, nous obtenons les informations sur le fichier audio de la base de données via la méthode db.First() et utilisons la méthode c.File() pour envoyer le fichier audio. au client à télécharger via le terminal. 🎜🎜Enfin, nous utilisons la méthode router.Run() pour démarrer le serveur Web et écouter les requêtes du client. 🎜🎜Grâce aux étapes ci-dessus, nous avons développé avec succès un lecteur audio simple utilisant le langage MySQL et Go. Dans ce lecteur audio, nous pouvons télécharger des fichiers audio et télécharger les fichiers audio correspondants en fonction de l'identifiant unique du fichier. Dans le même temps, nous pouvons également implémenter la fonction de lecture des fichiers audio via d'autres méthodes (telles que les balises audio HTML5). 🎜🎜J'espère que cet article vous aidera à comprendre comment développer un lecteur audio simple en utilisant le langage MySQL et Go. Veuillez noter que dans les applications pratiques, nous devons considérer davantage les problèmes de sécurité et d’optimisation des performances. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn