【问题标题】:Upload two and only two files and save in different folder in php上传两个且仅两个文件并保存在php的不同文件夹中
【发布时间】:2014-12-22 19:56:44
【问题描述】:

我有一个小的正在运行的代码,但零零散散。我希望能够上传两个文件(不多也不少)并将它们保存在不同的文件夹中。这些文件是“exe”。

文件:fileA,fileB

fileA 的文件路径:/home/abc/Downloads/createA/fileA

fileB 的文件路径:/home/abc/Downloads/createB/fileB

问题是,我有表单,它允许多次上传,但不加载第二个文件。我所看到的,是第一个文件被上传并保存在/home/abc/Downloads/createA/fileA

代码:

  <?php

    if(isset($_FILES['files'])){

    $errors= array();

    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){

           //added from single upload

   if($file_size > 3000000){

        $errors[]='File size must be less than 3 MB';

    }       
   if(empty($errors)==true){
            echo  "Please make sure uploaded file name contains 'fileA' in the name";
            echo '<br/>';

   if(preg_match("/fileA/i", $file_name)){ 
           $upload_dir = "/home/abc/Downloads/createA/";
           $upload_dir_1 = "$upload_dir".$file_name;
           mkdir($upload_dir, 0777, true);
           move_uploaded_file($file_tmp,$upload_dir_1);

         // print_r($upload_dir);
         echo '<br/>';
         echo "Success ";
         echo "Stored in: " .$upload_dir;


   if (preg_match("/fileB/i", $file_name)){
        $upload_dir = "/home/abc/Downloads/createB/";
        $upload_dir_1 = "$upload_dir".$file_name;
        mkdir($upload_dir, 0777, true);
        move_uploaded_file($file_tmp, $upload_dir_1);
        echo '<br/>';
        echo "Loaded fileB";
        }

    else{
        echo "I am not uploading fileB";
    }
        }

    }

  else{
     echo "I am not loading fileA"; 
     print_r($errors);
     }
}


<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="files[]" /><br />
    <input type="file" name="files[]" /><br />
    <input type="submit"/>
</form>

【问题讨论】:

  • 表单不提供任何路径信息。您决定服务器端代码中的路径。问题解决了。
  • 我知道该表单不会提供任何路径信息。此处的表单使用户能够加载单个/多个文件。我将表单和服务器端代码嵌入到同一个文件中。我的感觉是,由于逻辑原因,第二个文件没有上传。
  • 这不是你在问题中所说的。你说他们正在保存到相同的路径,现在你说第二个只是迷路了。更清楚。现在,我知道你不会想听到这个,但如果你真的将你的代码缩进到它可读的地方,那么找到错误可能会容易 10 倍。就目前而言,要判断循环中的内容和不存在的内容等工作量太大。

标签: php codeigniter upload


【解决方案1】:

此声明:

if(preg_match("/fileA/i", $file_name))

还有这句话:

if(preg_match("/fileB/i", $file_name))

应该单独评估,但目前您将第二个嵌套在第一个中

【讨论】:

  • 这无疑是缩进不良的结果。这就是发明tab 按钮的原因。
猜你喜欢
  • 1970-01-01
  • 2020-05-07
  • 2013-11-22
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 2011-09-21
  • 2014-02-18
  • 1970-01-01
相关资源
最近更新 更多