upload文件显示错误提示:在中只能通过引用传递变量

x4shl7ld  于 2021-06-24  发布在  Mysql
关注(0)|答案(4)|浏览(229)

我试图把它从这个错误我不明白为什么会发生,因为我上传的文件正确。。。现在正在上传的文件,它显示了我的错误通知:只有变量应该通过引用传递在。。。

<?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>
eagi6jfj

eagi6jfj1#

更改此行:

$file_ext = strtolower(end(explode('.', $_FILES['csv']['name'])));

对此:

$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);

关于 If I change this to name this code does not works ,这是因为还需要将数组索引更改为 nameFILES 超全局访问数据。

if (isset($_FILES['name'])) {
    $errors = [];
    $file_name = $_FILES['name']['name'];
    $file_size = $_FILES['name']['size'];
    // and so on...
}
nsc4cvqm

nsc4cvqm2#

打电话的时候 end() ,则必须将数组作为变量而不是函数的返回值传递。所以在。。。

$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));

您可以指定 explode() 然后调用 end() ```
$file_parts =explode('.',$_FILES['csv']['name']);
$file_ext=strtolower(end($file_parts));

如果你看一下文档 `end()` ,表示参数为 `array &$array` ,的 `&` 显示它是通过引用传递的。
qco9c6ql

qco9c6ql3#

当您没有传入一个普通变量时,它会发出抱怨。它不喜欢传递函数。
你也已经分配了 $_FILES['csv']['name'] 作为 $name ,所以就用 $name .
把队伍分开:

$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));

$file_ext = explode('.',$name);
$file_ext = end($file_ext);
$file_ext = strtolower($file_ext);
osh3o9ms

osh3o9ms4#

结束-将数组的内部指针设置为其最后一个元素。分成不同的变量。这应该管用

$file_exploding =explode('.',$_FILES['csv']['name']);
$file_last_element = end($file_exploding);
$file_ext=strtolower($file_last_element);

相关问题