MySQL と Go 言語を使用してシンプルなオーディオ プレーヤーを開発する方法
オーディオ プレーヤーは、私たちの一般的なアプリケーションの 1 つです。MySQL と Go 言語を使用することで、シンプルなオーディオプレーヤーを簡単に実装できます。この記事では、MySQL を使用して音声ファイルに関する情報を保存し、Go 言語を使用して音声ファイルのアップロード、ダウンロード、再生機能を実装する方法を紹介します。
まず、オーディオ ファイルに関する情報を保存するデータベースを作成する必要があります。データベースの名前が 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 を変換します。
path 静的ファイルへのパスを指定します。静的ファイルはサーバーの ./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() メソッドを使用して Web サーバーを起動し、クライアントからのリクエストを待機します。
以上がMySQL と Go 言語を使用してシンプルなオーディオ プレーヤーを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。