如何用ThinkPHP框架实现表单数组中的图片批量上传功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1305个文字,预计阅读时间需要6分钟。
本文实例讲述了ThinkPHP框架中如何实现表单数组批量上传图片功能。以下是一个简单的实现方法,供大家参考:
实现步骤:
1. 创建表单:在HTML页面中创建一个表单,包含一个文件输入元素,允许用户选择多个图片文件。
2. 处理上传:在ThinkPHP控制器中,编写处理文件上传的函数。使用ThinkPHP的`upload`方法来接收和保存上传的图片。
3. 批量处理:在处理函数中,遍历上传的图片数组,对每张图片进行处理,如重命名、移动到指定目录等。
4. 返回结果:将处理后的图片信息返回给前端页面。
代码示例:
php// HTML表单
// ThinkPHP控制器public function uploadBatch(){ $upload=new \Think\Upload(); // 实例化上传类 $upload->maxSize=3145728 ;// 设置附件上传大小 $upload->exts=array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型 $upload->rootPath='./Uploads/'; // 设置附件上传目录 $upload->savePath=''; // 设置附件上传子目录 $upload->saveName=array('uniqid',''); // 上传文件命名规则 $upload->autoSub=true; // 自动子目录保存文件 $upload->subName=array('date','Y-m-d'); // 子目录保存规则
// 上传文件 $info=$upload->upload();
if (!$info) { // 上传错误提示错误信息 return json(['code'=> 0, 'msg'=> $upload->getError()]); } else { // 上传成功 $imagePaths=[]; foreach ($info as $file) { $imagePaths[]=$file['savepath'] . $file['savename']; } return json(['code'=> 1, 'msg'=> '上传成功', 'data'=> $imagePaths]); }}
总结:
以上是一个简单的ThinkPHP表单数组批量上传图片功能的实现方法。在实际应用中,可以根据需求进行扩展和优化。希望本文能对大家有所帮助。
本文实例讲述了thinkphp框架表单数组实现图片批量上传功能。分享给大家供大家参考,具体如下:
今天做一个表单数组实现图片批量上传,js不是很会,在网上找了资料改的,html页面如下:
<script type="text/javascript"> var i = 1; function addElement(){ var tr = document.createElement('tr'); var td1=document.createElement("td"); var td2=document.createElement("td"); var td3=document.createElement("td"); var td4=document.createElement("td"); var td5=document.createElement("td"); var td6=document.createElement("td"); var td7=document.createElement("td"); td1.innerHTML="<strong>描述:</strong>"; td2.innerHTML="<textarea name='des[]' ></textarea>"; td3.innerHTML="<strong>图片:</strong>"; td4.innerHTML="<input type='text' name='image[]' id='image"+i+"'/><IFRAME name=fo frameBorder=0 height=24 marginHeight=1 marginWidth=1 scrolling=no BORDERCOLOR='#CCCCFF' src='__APP__/Upimg/upimgs/ind/"+i+"' style='vertical-align: middle;'></iframe><span style='color:red'>请上传小于2M的图片</span>"; td5.innerHTML="<strong>排序:</strong>"; td6.innerHTML="<input type='text' name='px[]' value='5'/>"; td7.innerHTML="<a class='editbtn' href='javascript:void(0);' οnclick='addElement()'>增 加</a> | <a class='editbtn' href='javascript:void(0);' οnclick='dropElement()'>删减</a>"; tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tr.appendChild(td4); tr.appendChild(td5); tr.appendChild(td6); tr.appendChild(td7); tr.id = 'Elem'+i; document.getElementById('pdr1').appendChild(tr); i++; } function dropElement(){ var aaa = document.getElementById('Elem'+(i-1)); document.getElementById('pdr1').removeChild(aaa); i--; } function checkForm() { for(k=i;k>=0;k--) { if(document.getElementById("image"+k).value=="") { alert("图片不能空"); return false; } } } </script> <div style="margin:20px auto"> <form method="post" name="form1" action="__URL__/insert" οnsubmit="return checkForm();"> <input type="hidden" name="fid" value="{$fid}"/> <table class="table" cellspacing="1" cellpadding="2" width="90%" align="center" border="0" id="pdr1"> <tbody> <tr > <td width="5%" class="td_bg" align="right"><strong>描述:</strong></td> <td class="td_bg" width="25%"><textarea name="des[]"></textarea></td> <td width="5%" class="td_bg" align="right"><strong>图片:</strong></td> <td class="td_bg" width="25%"> <input type="text" name="image[]" id="image0"/><IFRAME name=fo frameBorder=0 height=24 marginHeight=1 marginWidth=1 scrolling=no BORDERCOLOR="#CCCCFF" src="{:U('Upimg/upimgs','ind=0')}" style="vertical-align: middle;"></iframe> <span style="color:red">请上传小于2M的图片</span></td> <td width="5%" class="td_bg" align="right"><strong>排序:</strong></td> <td class="td_bg" width="20%"><input type="text" name="px[]" value="5"/></td> <td width="10%" class="td_bg" align="right"><a class="editbtn" href="javascript:void(0);" rel="external nofollow" rel="external nofollow" οnclick="addElement()">增 加</a> | <a class="editbtn" href="javascript:void(0);" rel="external nofollow" rel="external nofollow" οnclick="dropElement()">删减</a></td> </tr> </tbody> </table> <input type="submit" name="submit" value=" 添 加 "/> </form>
在做__APP__/Upimg/upimgs/ind/+ind这段时,刚开始我用的U()函数,但是把js变量i传入U()函数无法解析,所以在这里改为了url方式。
在获取表单数组并插入数据库时用循环遍历并写入数据库:
foreach($data['description'] as $key) { $data1['picid']=$fid; $data1['description']=$data['description'][$i]; $data1['image']=$data['image'][$i]; $data1['px']=$data['px'][$i]; $result=$model->add($data1); $i++; }
$data是通过转换来的,可以直接用$_POST,做这个由于不熟悉js,所以在上面花了很多时间,刚开始我是用
var tr = document.createElement('tr'); tr.innerHTML= "<td width='5%' class='td_bg' align='right'><strong>描述:</strong></td>"; tr.innerHTML+= "<td class='td_bg' width='25%'><textarea name='des[]'></textarea></td>"; tr.id = 'Elem'+i; document.getElementById('pdr1').appendChild(tr);
但是ie不兼容,后又在网上找了上面的方法。
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
本文共计1305个文字,预计阅读时间需要6分钟。
本文实例讲述了ThinkPHP框架中如何实现表单数组批量上传图片功能。以下是一个简单的实现方法,供大家参考:
实现步骤:
1. 创建表单:在HTML页面中创建一个表单,包含一个文件输入元素,允许用户选择多个图片文件。
2. 处理上传:在ThinkPHP控制器中,编写处理文件上传的函数。使用ThinkPHP的`upload`方法来接收和保存上传的图片。
3. 批量处理:在处理函数中,遍历上传的图片数组,对每张图片进行处理,如重命名、移动到指定目录等。
4. 返回结果:将处理后的图片信息返回给前端页面。
代码示例:
php// HTML表单
// ThinkPHP控制器public function uploadBatch(){ $upload=new \Think\Upload(); // 实例化上传类 $upload->maxSize=3145728 ;// 设置附件上传大小 $upload->exts=array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型 $upload->rootPath='./Uploads/'; // 设置附件上传目录 $upload->savePath=''; // 设置附件上传子目录 $upload->saveName=array('uniqid',''); // 上传文件命名规则 $upload->autoSub=true; // 自动子目录保存文件 $upload->subName=array('date','Y-m-d'); // 子目录保存规则
// 上传文件 $info=$upload->upload();
if (!$info) { // 上传错误提示错误信息 return json(['code'=> 0, 'msg'=> $upload->getError()]); } else { // 上传成功 $imagePaths=[]; foreach ($info as $file) { $imagePaths[]=$file['savepath'] . $file['savename']; } return json(['code'=> 1, 'msg'=> '上传成功', 'data'=> $imagePaths]); }}
总结:
以上是一个简单的ThinkPHP表单数组批量上传图片功能的实现方法。在实际应用中,可以根据需求进行扩展和优化。希望本文能对大家有所帮助。
本文实例讲述了thinkphp框架表单数组实现图片批量上传功能。分享给大家供大家参考,具体如下:
今天做一个表单数组实现图片批量上传,js不是很会,在网上找了资料改的,html页面如下:
<script type="text/javascript"> var i = 1; function addElement(){ var tr = document.createElement('tr'); var td1=document.createElement("td"); var td2=document.createElement("td"); var td3=document.createElement("td"); var td4=document.createElement("td"); var td5=document.createElement("td"); var td6=document.createElement("td"); var td7=document.createElement("td"); td1.innerHTML="<strong>描述:</strong>"; td2.innerHTML="<textarea name='des[]' ></textarea>"; td3.innerHTML="<strong>图片:</strong>"; td4.innerHTML="<input type='text' name='image[]' id='image"+i+"'/><IFRAME name=fo frameBorder=0 height=24 marginHeight=1 marginWidth=1 scrolling=no BORDERCOLOR='#CCCCFF' src='__APP__/Upimg/upimgs/ind/"+i+"' style='vertical-align: middle;'></iframe><span style='color:red'>请上传小于2M的图片</span>"; td5.innerHTML="<strong>排序:</strong>"; td6.innerHTML="<input type='text' name='px[]' value='5'/>"; td7.innerHTML="<a class='editbtn' href='javascript:void(0);' οnclick='addElement()'>增 加</a> | <a class='editbtn' href='javascript:void(0);' οnclick='dropElement()'>删减</a>"; tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tr.appendChild(td4); tr.appendChild(td5); tr.appendChild(td6); tr.appendChild(td7); tr.id = 'Elem'+i; document.getElementById('pdr1').appendChild(tr); i++; } function dropElement(){ var aaa = document.getElementById('Elem'+(i-1)); document.getElementById('pdr1').removeChild(aaa); i--; } function checkForm() { for(k=i;k>=0;k--) { if(document.getElementById("image"+k).value=="") { alert("图片不能空"); return false; } } } </script> <div style="margin:20px auto"> <form method="post" name="form1" action="__URL__/insert" οnsubmit="return checkForm();"> <input type="hidden" name="fid" value="{$fid}"/> <table class="table" cellspacing="1" cellpadding="2" width="90%" align="center" border="0" id="pdr1"> <tbody> <tr > <td width="5%" class="td_bg" align="right"><strong>描述:</strong></td> <td class="td_bg" width="25%"><textarea name="des[]"></textarea></td> <td width="5%" class="td_bg" align="right"><strong>图片:</strong></td> <td class="td_bg" width="25%"> <input type="text" name="image[]" id="image0"/><IFRAME name=fo frameBorder=0 height=24 marginHeight=1 marginWidth=1 scrolling=no BORDERCOLOR="#CCCCFF" src="{:U('Upimg/upimgs','ind=0')}" style="vertical-align: middle;"></iframe> <span style="color:red">请上传小于2M的图片</span></td> <td width="5%" class="td_bg" align="right"><strong>排序:</strong></td> <td class="td_bg" width="20%"><input type="text" name="px[]" value="5"/></td> <td width="10%" class="td_bg" align="right"><a class="editbtn" href="javascript:void(0);" rel="external nofollow" rel="external nofollow" οnclick="addElement()">增 加</a> | <a class="editbtn" href="javascript:void(0);" rel="external nofollow" rel="external nofollow" οnclick="dropElement()">删减</a></td> </tr> </tbody> </table> <input type="submit" name="submit" value=" 添 加 "/> </form>
在做__APP__/Upimg/upimgs/ind/+ind这段时,刚开始我用的U()函数,但是把js变量i传入U()函数无法解析,所以在这里改为了url方式。
在获取表单数组并插入数据库时用循环遍历并写入数据库:
foreach($data['description'] as $key) { $data1['picid']=$fid; $data1['description']=$data['description'][$i]; $data1['image']=$data['image'][$i]; $data1['px']=$data['px'][$i]; $result=$model->add($data1); $i++; }
$data是通过转换来的,可以直接用$_POST,做这个由于不熟悉js,所以在上面花了很多时间,刚开始我是用
var tr = document.createElement('tr'); tr.innerHTML= "<td width='5%' class='td_bg' align='right'><strong>描述:</strong></td>"; tr.innerHTML+= "<td class='td_bg' width='25%'><textarea name='des[]'></textarea></td>"; tr.id = 'Elem'+i; document.getElementById('pdr1').appendChild(tr);
但是ie不兼容,后又在网上找了上面的方法。
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

