数据库信息(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;
}
}
最终展现的效果
![](https://img2020.cnblogs.com/blog/1922055/202005/1922055-20200523094945679-30241125.png)