tp5使用layui非同步上傳圖片
阿新 • • 發佈:2019-01-07
上傳檔案任何地方都要用到,這篇文章介紹使用layui非同步上傳圖片。
1.檢視程式碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上傳外掛</title>
<link href="/static/layui/css/layui.css" rel="stylesheet">
</head>
<body>
<div class="layui-upload" >
<button type="button" class="layui-btn" id="cover">上傳封面</button>
</div>
<div class="layui-input-inline">
<img id="preview" width="200px" height="200px">
</div>
<script src="/static/layui/layui.js"></script>
<script>
layui. use('upload', function() {
var upload = layui.upload;
var $ = layui.jquery;
var uploadInst = upload.render({
elem:'#cover'
,url:'doUpload'
,accept:'file' // 允許上傳的檔案型別
,auto:true // 自動上傳
,before:function (obj) {
console. log(obj);
// 預覽
obj.preview(function(index,file,result) {
// console.log(file.name); //圖片名字
// console.log(file.type); //圖片格式
// console.log(file.size); //圖片大小
// console.log(result); //圖片地址
$('#preview').attr('src',result); //圖片連結 base64
});
// layer.load();
}
// 上傳成功回撥
,done:function(res) {
// console.log(upload);
// console.log(res);
if (res.code == 0) {
return layer.msg(res.msg);
}
return layer.msg(res.msg);
}
// 上傳失敗回撥
,error:function(index,upload) {
return layer.msg(res.msg);
}
});
});
</script>
</body>
</html>
2.控制器程式碼
// 顯示上傳頁面
public function upload()
{
return view();
}
//開始上傳
public function doUpload()
{
$img = request()->file('file');
// 移動到框架應用根目錄/public/uploads/ 目錄下
$info = $img->move(ROOT_PATH . 'public' . DS . 'layer_uploads');
if($info){
// 成功上傳後 獲取上傳資訊
return json(['code' => 0, 'msg' => '上傳成功!', 'url' => '/layer_uploads/' . $info->getSaveName()]);
}else{
// 上傳失敗獲取錯誤資訊
return json(['code' => 1, 'msg' => $img->getError(), 'url' => '']);
}
}
最好效果就是這樣: