ThinkPHP6中的多图上传以及图片预览
2021/10/18 20:10:14
本文主要是介绍ThinkPHP6中的多图上传以及图片预览,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、html部分
<form action="" method="post" enctype="multipart/form-data"> <span>上传图片<input type="file" name="head_line_pic[]" multiple="multiple" value="上传图片" id="files" accept="image/*" onchange="javascript:setImagePreviews();"/></span> <button type="submit" class="button primary px-6"> 提交 </button> <div id="preview"> //多图预览区域 </div> </form>
二 、js部分
//下面用于多图片上传预览功能 function setImagePreviews(avalue) { var docObj = document.getElementById("files"); var dd = document.getElementById("preview"); dd.innerHTML = ""; var fileList = docObj.files; for (var i = 0; i < fileList.length; i++) { dd.innerHTML += "<div style='float:left' > <img id='img" + i + "' /> </div>"; var imgObjPreview = document.getElementById("img"+i); if (docObj.files && docObj.files[i]) { //火狐下,直接设img属性 imgObjPreview.style.display = 'block'; //控制缩略图大小 imgObjPreview.style.width = '70px'; imgObjPreview.style.height = '70px'; //imgObjPreview.src = docObj.files[0].getAsDataURL(); //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式 imgObjPreview.src = window.URL.createObjectURL(docObj.files[i]); } else { //IE下,使用滤镜 docObj.select(); var imgSrc = document.selection.createRange().text; alert(imgSrc) var localImagId = document.getElementById("img" + i); //必须设置初始大小 localImagId.style.width = "70px"; localImagId.style.height = "70px"; //图片异常的捕捉,防止用户修改后缀来伪造图片 try { localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc; } catch (e) { alert("您上传的图片格式不正确,请重新选择!"); return false; } imgObjPreview.style.display = 'none'; document.selection.empty(); } } return true; }
三、 PHP部分
$files = ''; $r_file=request()->file(); if (!empty($r_file['head_line_pic'])) { $files = request()->file('head_line_pic'); //接收图片 } if (!empty($files)){ foreach ($files as $key => $file) { $save_file_name = \think\facade\Filesystem::disk('public_admin_uploads')->putFile('head_line', $file, 'data'); //public_admin_uploads是路径,在config/filesystem.php里面配置的最下面我会列出我的filesystem.php配置文件的内容 if ($save_file_name == false) { throw new Exception('图片上传失败'); } $save_file_name = $file_path . (str_replace('\\', '/', $save_file_name)); //拼装新的路径 var_dump($save_file_name); //获得了上传图片的地址 存入到数据库就可以了 } }
四、 filesystem.php配置文件
return [ // 默认磁盘 'default' => env('filesystem.driver', 'local'), // 磁盘列表 'disks' => [ 'local' => [ 'type' => 'local', 'root' => app()->getRuntimePath() . 'storage', ], 'public' => [ // 磁盘类型 'type' => 'local', // 磁盘路径 'root' => app()->getRootPath() . 'public/storage', // 磁盘路径对应的外部URL路径 'url' => '/storage', // 可见性 'visibility' => 'public', ], 'public_admin_uploads' => [ // 磁盘类型 'type' => 'local', // 磁盘路径 'root' => app()->getRootPath() . 'public/uploads/admin', // 磁盘路径对应的外部URL路径 'url' => '/uploads/admin', // 可见性 'visibility' => 'public', ], 'public_api_uploads' => [ // 磁盘类型 'type' => 'local', // 磁盘路径 'root' => app()->getRootPath() . 'public/uploads/api', // 磁盘路径对应的外部URL路径 'url' => '/uploads/api', // 可见性 'visibility' => 'public', ], ], ];
以上就是关于TP6多图上传以及图片预览功能,有什么问题欢迎大家评论留言!
这篇关于ThinkPHP6中的多图上传以及图片预览的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享