Php 上载文件显示错误通知:在中只能通过引用传递变量
我试图把它关闭这个错误我不明白为什么会发生,因为我上传的文件正确。。。现在正在上载文件,它向我显示了错误通知:在Php 上载文件显示错误通知:在中只能通过引用传递变量,php,mysql,excel,Php,Mysql,Excel,我试图把它关闭这个错误我不明白为什么会发生,因为我上传的文件正确。。。现在正在上载文件,它向我显示了错误通知:在 <?php if(isset($_FILES['csv'])){ $errors= array(); $file_name = $_FILES['csv']['name']; $file_size = $_FILES['csv']['size']; $file_tmp = $_FILES['csv']['tmp_
<?php
if(isset($_FILES['csv'])){
$errors= array();
$file_name = $_FILES['csv']['name'];
$file_size = $_FILES['csv']['size'];
$file_tmp = $_FILES['csv']['tmp_name'];
$file_type = $_FILES['csv']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));// error line
$expensions= array("csv");
if(in_array($file_ext,$expensions)=== false){
$errors[]="extension not allowed, please choose a csv file.";
}
if($file_size > 2097152) {
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true) {
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>
<form action = "" method = "POST" enctype = "multipart/form-data">
<input type = "file" name = "csv" />// If I change this to name this code does not works,
<input type = "submit" value="Subir archivos"/>
</form>
</body>
</html>
//如果我将其改为名称,则此代码不起作用,
调用时,必须将数组作为变量传递,而不是函数的返回值。所以在
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
您可以将explode()
的返回赋值给变量,然后调用end()
如果查看end()
的文档,它会显示参数为array&$array
,&
显示它是通过引用传递的。调用时,必须将数组作为变量传递,而不是函数的返回值。所以在
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
您可以将explode()
的返回赋值给变量,然后调用end()
如果您查看
end()
的文档,它显示参数为数组和$array
,&
显示它是通过引用传递的。当您没有传入普通变量时,它会抱怨。它不喜欢传入函数
另外,您已经将$\u文件['csv']['name']
指定为$name
,因此只需使用$name
把队伍分开:
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
到
当您没有传入普通变量时,它会发出抱怨。它不喜欢传入函数 另外,您已经将
$\u文件['csv']['name']
指定为$name
,因此只需使用$name
把队伍分开:
$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
到
更改此行:
$file_ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
为此:
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
关于,如果我将其更改为名称,则此代码不起作用,这是因为您还需要将文件
superglobal上的数组索引更改为name
,以访问数据
if (isset($_FILES['name'])) {
$errors = [];
$file_name = $_FILES['name']['name'];
$file_size = $_FILES['name']['size'];
// and so on...
}
更改此行:
$file_ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
为此:
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
关于,如果我将其更改为名称,则此代码不起作用,这是因为您还需要将文件
superglobal上的数组索引更改为name
,以访问数据
if (isset($_FILES['name'])) {
$errors = [];
$file_name = $_FILES['name']['name'];
$file_size = $_FILES['name']['size'];
// and so on...
}
结束-将数组的内部指针设置为其最后一个元素。
分为不同的变量。这应该行得通
$file_exploding =explode('.',$_FILES['csv']['name']);
$file_last_element = end($file_exploding);
$file_ext=strtolower($file_last_element);
结束-将数组的内部指针设置为其最后一个元素。
分为不同的变量。这应该行得通
$file_exploding =explode('.',$_FILES['csv']['name']);
$file_last_element = end($file_exploding);
$file_ext=strtolower($file_last_element);
你确定是这个代码引起了这个通知吗?没有行号/文件?它指的是哪一行代码?这是一个$file_ext=strtolower(end(explode('.',$_FILES['csv']['name']));你确定是这个代码引起了这个通知吗?没有行号/文件?它指的是哪一行代码?这是一个$file_ext=strtolower(end(explode('.',$_FILES['csv']['name']));