php-mysql保存音频(mp3)并读取

数据库信息(DDL)

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ' ',
  `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `audio` longblob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

前端资源

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="csrf-token" content="{{ csrf_token() }}">
    <link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css"/>
    <script src="https://www.layuicdn.com/layui/layui.js"></script>
    <title>Document</title>
</head>
<body>
<button type="button" class="layui-btn" id="test6"><i class="layui-icon"></i>上传音频</button>
</body>
<audio controls>
    <source src="horse.ogg" type="audio/ogg">
    <source src="{{url("export")}}" type="audio/mpeg">
    您的浏览器不支持 audio 元素。
</audio>
<script>
    layui.use('upload', function () {
        var $ = layui.jquery
            , upload = layui.upload;


        upload.render({
            elem: '#test6',
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
            ,url: 'import' //改成您自己的上传接口
            ,accept: 'audio' //音频
            ,done: function(res){
                layer.msg('上传成功');
                console.log(res)
            }
        });

    });
</script>
</html>

使用到的路由

Route::any('import','TestController@import');
Route::any('export','TestController@export');

控制器代码

<?php

namespace App\Http\Controllers;


use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;


class TestController extends Controller
{
    public function import(Request $request)
    {
        $file = $request->file('file');#得到全部的文件信息
        $filetype = $file->getClientOriginalExtension();#得到文件的后缀如(.mp3)
        $path = $file->getRealPath();#得到文件的临时保存路径
        $data = DB::table('user')->insert(['type' => $filetype, 'audio' => file_get_contents($path)]);
        if ($data) {
            return [
                'success' => 1,
                'message' => '数据保存成功'
            ];
        }
    }

    public function export(Request $request)
    {
        $file = DB::table('user')->find(1);#得到保存的全部信息
        $audio = $file->audio;
        header('Content-Type: audio/mpeg');
        return $audio;
    }
}

最终展现的效果

posted @ 2020-05-23 09:50  以己为镜  阅读(118)  评论(0编辑  收藏  举报