tp多文件上传致命错误: Call to a member function move() on string

本文详细介绍了在ThinkPHP框架中实现多文件上传的方法,强调了前端表单name属性设置为数组格式的重要性,并提供了两种有效的代码示例。

在这里插入图片描述

解决方案

在使用tp上传多个文件上传的时候,一定要注意前台的写法!!!

先把我代码贴出来参考一下:
index控制器:

<?php
namespace app\index\controller;
use think\Controller;
use think\Loader;
use think\Db;
use think\Request;
class Index extends Controller
{
    public function index()
    {
    	if(isset($_POST['sub']))
    	{
	        $file = request()->file('file');

	        foreach($file as $files)
	        {
	        	$info = $files->move(ROOT_PATH . 'public' . DS . 'uploads/images');
	        	if($info){
	        	echo '文件上传成功'.'<br/>';
		        }
		        else{
		        	echo '文件上传失败'.'<br/>';
		        }
	        }  
       	}
       	else
       	{
       		return view('index');
       	}
    }
}

index.html视图
在这里插入图片描述
错误解析:

多文件上传的情况下,前台的name属性的值必须是一个数组格式,如果接受过来的文件是一个字符串格式,所以就无法使用foreach,从而报错。

正确写法:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="file[]" /><br>
    <input type="file" name="file[]" /><br>
    <input type="file" name="file[]" /><br>
    <input type="submit" name="sub" value="提交" />
</form>
</body>
</html>

或者(推荐使用):

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="file[]" multiple="multiple" /><br>
    <input type="submit" name="sub" value="提交" />
</form>
</body>
</html>

mulitple:可在一个上传控件里上传多个文件。比较节省代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值