将以下代码放置你要进行上传的页面,别忘记改 name 值,代码来源于 HDJS。
<div class="form-group">
<label for="" class="col-sm-2 control-label">预览图</label>
<div class="col-sm-10">
<div class="input-group">
<input class="form-control" name="preview" readonly="" value="node_modules/hdjs/dist/static/image/nopic.jpg">
<div class="input-group-btn">
<button onclick="upImagePc(this)" class="btn btn-default" type="button">选择图片</button>
</div>
</div>
<div class="input-group" style="margin-top:5px;">
<img src="{{asset('node_modules/hdjs/dist/static/image/nopic.jpg')}}" class="img-responsive img-thumbnail" width="150">
<em class="close" style="position:absolute; top: 0px; right: -14px;" title="删除这张图片"
onclick="removeImg(this)">×</em>
</div>
</div>
<script>
require(['hdjs']);
//上传图片
function upImagePc() {
require(['hdjs'], function (hdjs) {
var options = {
multiple: false,//是否允许多图上传
};
hdjs.image(function (images) {
//上传成功的图片,数组类型
$("[name='preview']").val(images[0]);
$(".img-thumbnail").attr('src', images[0]);
}, options)
});
}
//移除图片
function removeImg(obj) {
$(obj).prev('img').attr('src', '../dist/static/image/nopic.jpg');
$(obj).parent().prev().find('input').val('');
}
</script>
</div>
图片地址可以为:
<img src="/node_modules/hdjs/dist/static/image/nopic.jpg"...
也可以使用 {{asset('node_modules/hdjs/dist/static/image/nopic.jpg')}} 生成,区别在于 asset 函数可以生成带有 http 的地址,并且指向 public 目录。
<img src="{{asset('node_modules/hdjs/dist/static/image/nopic.jpg')}}"...
修改配置项 config/filesystems.php ,在 disks 数组中增加如下代码,这样 attachment 就会在 public 目录下面生成,因为 storage_path() 会指向 storage 目录,不在 public 目录下不便于访问。
'attachment' => [ 'driver' => 'local', 'root' => 'attachment', ],
建立后台控制器配合 HDJS 上传。
php artisan make:controller Component/UploadController
建立【uploader】和【filesLists】方法:
public function uploader(Request $request)
{
$upload = $request->file;
//可以查看$upload的方法,比如获得大小,类型等...
//$arr = get_class_methods($upload);
//dd($arr);
//判断是否上传成功
if($upload->isValid()){
$path = $upload->store(date('ymd'),'attachment');
return ['valid'=>1,'message'=>asset('attachment/' . $path)];
}
return ['valid'=>0,'message'=>'上传失败'];
}
配置路由,因不属于后台,直接在 routes/web.php 配置即可。
Route::any('/component/uploader', 'Component\UploadController@uploader');
Route::any('/component/filesLists', 'Component\UploadController@uploader');
更改 master.blade.php 中的 HDJS 配置:
<script>
window.hdjs={};
//组件目录必须绝对路径(在网站根目录时不用设置)
window.hdjs.base = '{{asset("node_modules/hdjs")}}';
//上传文件后台地址
window.hdjs.uploader = '{{asset("/component/uploader")}}';
//获取文件列表的后台地址
window.hdjs.filesLists = '{{asset("/component/filesLists")}}?';
</script>
在使用图片上传插件时,总会遇到一些坑,下面奉献两张上传成功的截图,祝你好运~


Finally,谢谢大家的阅读!祝每天开心~
版权声明:本文为博主原创文章,未经博主允许不得转载。
微信赞赏
支付宝赞赏
给个建议,这个deemo主要是逻辑内容,可以把不必要的样式代码,布局代码去掉会变得更加简明清晰
收到~