php表单带多图上传,thinkphp框架表单数组实现图片批量上传功能示例

本文实例讲述了thinkphp框架表单数组实现图片批量上传功能。分享给大家供大家参考,具体如下:

今天做一个表单数组实现图片批量上传,js不是很会,在网上找了资料改的,html页面如下:

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="描述:";

td2.innerHTML="";

td3.innerHTML="图片:";

td4.innerHTML="请上传小于2M的图片";

td5.innerHTML="排序:";

td6.innerHTML="";

td7.innerHTML="增 加 | 删减";

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;

}

}

}

border="0" id="pdr1">

描述: 图片:

scrolling=no BORDERCOLOR="#CCCCFF"

src="{:U('Upimg/upimgs','ind=0')}" style="vertical-align: middle;">

请上传小于2M的图片

排序: 增 加 | 删减

在做__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= "

描述:";

tr.innerHTML+= "

";

tr.id = 'Elem'+i;

document.getElementById('pdr1').appendChild(tr);

但是ie不兼容,后又在网上找了上面的方法。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现thinkPHP接收element上传图片,需要在前端使用Element-ui的上传组件,同时在后端用thinkPHP接收上传图片并进行处理。 首先,在前端的表单弹框中加入上传组件,代码如下: ``` <template> <el-dialog title="上传图片" :visible.sync="dialogVisible"> <el-upload action="your-upload-url" :headers="{ 'Authorization': 'Bearer ' + token }" :on-success="handleSuccess" :on-error="handleError" :before-upload="beforeUpload" :file-list="fileList" list-type="picture" :data="{ 'type': 'image' }" > <el-button slot="trigger" size="small" type="primary">选择图片</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过5MB</div> </el-upload> <div slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="submitForm">确 定</el-button> </div> </el-dialog> </template> <script> export default { data() { return { dialogVisible: false, fileList: [], token: localStorage.getItem('token') }; }, methods: { handleSuccess(response, file, fileList) { console.log(response); this.fileList = fileList; this.$message.success('上传成功'); }, handleError(error, file, fileList) { console.log(error); this.$message.error('上传失败'); }, beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'; const isLt5M = file.size / 1024 / 1024 < 5; if (!isJPG) { this.$message.error('上传图片只能是 JPG/PNG 格式!'); } if (!isLt5M) { this.$message.error('上传图片大小不能超过 5MB!'); } return isJPG && isLt5M; }, submitForm() { // 提交表单 } } }; </script> ``` 其中,`:action` 属性指定上传的地址,`:headers` 属性设置请求头,`:on-success` 和 `:on-error` 属性分别设置上传成功和失败的回调函数,`:before-upload` 属性设置上传前的校验规则,`:file-list` 属性绑定已上传图片列表,`:data` 属性设置额外的参数。 接下来,在后端用thinkPHP接收上传图片并进行处理。首先需要在控制器中创建一个上传图片的方法: ``` public function uploadImage() { $file = request()->file('file'); if (!$file) { return json(['code' => -1, 'msg' => '请选择上传的文件']); } $info = $file->validate(['size' => 512000, 'ext' => 'jpg,png'])->move(ROOT_PATH . 'public' . DS . 'uploads'); if ($info) { $url = '/uploads/' . $info->getSaveName(); return json(['code' => 0, 'msg' => '上传成功', 'url' => $url]); } else { return json(['code' => -1, 'msg' => '上传失败:' . $file->getError()]); } } ``` 该方法首先获取上传的文件对象,然后进行校验,最后将文件移动到指定的目录,并返回上传成功后的图片地址。 最后,在前端的上传组件中设置上传成功后的回调函数,将上传成功后返回的图片地址保存到表单中: ``` handleSuccess(response, file, fileList) { console.log(response); this.fileList = fileList; this.$message.success('上传成功'); // 保存图片地址到表单中 let imageUrl = response.url; this.form.image = imageUrl; }, ``` 这样就可以实现thinkPHP接收element上传图片了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值