使用多个输入字段上载多个文件



我的视图中有几个输入字段与类似

<head>
<title>Upload Form</title>
</head>
<body>
<?php echo form_open_multipart('info/normal_upload');?>
<input type="file" name="one" size="20" />
<input type="file" name="two" size="30" />
<input type="file" name="three" size="40" />
<br /><br />
<input type="submit" value="upload" />
</form>
</body>
</html>

我正在上传像这个这样的文件

        $config['upload_path'] = realpath(FCPATH.'uploads');
        $config['allowed_types']= "gif|jpg|png|jpeg|pdf";
        $config['overwrite'] = TRUE;
        $config['max_size'] = "2048000"; 
        $config['max_height'] = "5000";
        $config['max_width'] = "5000";
        $this->load->library('upload', $config);
        
        if ( ! $this->upload->do_upload('one'))
        {
                $error = array('error' => $this->upload->display_errors());
                $this->load->view('normal_upload', $error);
        }
         if ( ! $this->upload->do_upload('two'))
        {
                $error = array('error' => $this->upload->display_errors());
                //$this->load->view('normal_upload', $error);
        }
         if ( ! $this->upload->do_upload('three'))
        {
                $error = array('error' => $this->upload->display_errors());
                //$this->load->view('normal_upload', $error);
        }
        else
        {
          $data = array('upload_data' => $this->upload->data());
          echo $data['upload_data']['full_path'].'<br/>';
          //$this->load->view('normal_upload', $data);
                
        }

我想得到上传的所有文件的文件名和路径。如果我在所有表单字段中选择文件,文件将被上传,但这是:

echo $data['upload_data']['full_path'].'<br/>';

只获取一个文件路径。如何获取文件路径并重命名上载的文件?

使用$this->加载库;负载->库('pload',$config(;只上传一个文件时有效。但是,当您上传多个文件时,需要使用配置重新初始化库。

更多信息请点击此处:

https://codeigniter.com/userguide3/libraries/file_uploading.html#initializing-上传类

像这样:

$this->load->library('upload');
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('one'))
{
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('normal_upload', $error);
}
$data['one'] = array('upload_data' => $this->upload->data());
$this->upload->initialize($config);
 if ( ! $this->upload->do_upload('two'))
{
        $error = array('error' => $this->upload->display_errors());
        //$this->load->view('normal_upload', $error);
}
 $data['two'] = array('upload_data' => $this->upload->data());
 $this->upload->initialize($config);
 if ( ! $this->upload->do_upload('three'))
{
        $error = array('error' => $this->upload->display_errors());
        //$this->load->view('normal_upload', $error);
}
$data['three'] = array('upload_data' => $this->upload->data());

然后你可以用类似的东西访问文件数据:

$data['one']['upload_data']['full_path'];
$data['two']['upload_data']['full_path'];
$data['three']['upload_data']['full_path'];

事实证明,它并不是那么直截了当。以下代码:

  • 只上传图像文件和pdf,只允许上传图像和pdf
  • 重命名上载的文件
  • 剥离上载文件中的所有空间
public function normal_upload(){
    $uploadLocation = "uploads/";
    $uploadMainTo = null;
    if(isset($_FILES['MainImage'])){
        
    $path = $_FILES['MainImage']['name']; // file means your input type file name
    $ext = pathinfo($path, PATHINFO_EXTENSION);
    
    if ($ext=="jpg" OR $ext=="jpeg" OR $ext=="gif" OR $ext=="png" OR $ext=="pdf") {
        echo "Upload successful";
    }else{
        // your invalid code here like...
        echo "Invalid image format. Only upload JPG or JPEG or GIF or PNG";
        header('Location: http://localhost/upload_app/info/nu');
    exit;
    }
    
    
      $main_image_name = $_FILES['MainImage']['name'];
      $main_image_size = $_FILES['MainImage']['size'];
      $main_image_tmp = $_FILES['MainImage']['tmp_name'];
      $uploadMainTo = $uploadLocation.sa(time().mt_rand(43,672882).bin2hex(random_bytes(16)).trim($main_image_name));
      $moveMain = move_uploaded_file($main_image_tmp,$uploadMainTo);
      
      
      echo $uploadMainTo.'<br/>';
    }
    
    $uploadSecondTo = null;
    if(isset($_FILES['SecondImage'])){
        
    $path = $_FILES['SecondImage']['name']; // file means your input type file name
    $ext = pathinfo($path, PATHINFO_EXTENSION);
    
    if ($ext=="jpg" OR $ext=="jpeg" OR $ext=="gif" OR $ext=="png" OR $ext=="pdf") {
        // your code here like...
        echo "Upload successful";
    }else{
        // your invalid code here like...
        echo "Invalid image format. Only upload JPG or JPEG or GIF or PNG";
        header('Location: http://localhost/upload_app/info/nu');
    exit;
    }
    
    
      $second_image_name = $_FILES['SecondImage']['name'];
      $second_image_size = $_FILES['SecondImage']['size'];
      $second_image_tmp = $_FILES['SecondImage']['tmp_name'];
      $uploadMainTo = $uploadLocation.sa(time().mt_rand(43,672882).bin2hex(random_bytes(16)).trim($main_image_name));
      $moveSecond = move_uploaded_file($second_image_tmp,$uploadSecondTo);
      echo $uploadSecondTo.'<br/>';
    }
    
    $uploadPdfTo = null;
    if(isset($_FILES['PDF'])){
    
    $path = $_FILES['PDF']['name']; // file means your input type file name
    $ext = pathinfo($path, PATHINFO_EXTENSION);
    
    if ($ext=="jpg" OR $ext=="jpeg" OR $ext=="gif" OR $ext=="png" OR $ext=="pdf") {
        // your code here like...
        echo "Upload successful";
    }else{
        // your invalid code here like...
        echo "Invalid image format. Only upload JPG or JPEG or GIF or PNG";
        header('Location: http://localhost/upload_app/info/nu');
    exit;
    }
    
    
      $pdf_name = $_FILES['PDF']['name'];
      $pdf_size = $_FILES['PDF']['size'];
      $pdf_tmp = $_FILES['PDF']['tmp_name'];
      $uploadMainTo = $uploadLocation.sa(time().mt_rand(43,672882).bin2hex(random_bytes(16)).trim($main_image_name));
      $movepdf = move_uploaded_file($pdf_tmp,$uploadPdfTo);
      echo $uploadPdfTo.'<br/>';
    }
    
    }

定义助手sa_helper.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( ! function_exists('sa')){
function sa($string){
    return str_replace(' ', '', $string);
}
   }
?>

这是你的观点

<head>
<title>Upload Form</title>
</head>
<body>
<?php echo form_open_multipart('info/normal_upload');?>
<input type="file" name="PDF">
<input type="file" name="MainImage">
<input type="file" name="SecondImage">
<br /><br />
<input type="submit" value="upload" />
</form>
</body>
</html>

要使用jquery上传文件,请使用此表单,它也适用于

<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("#form_img").submit(function(e){
            e.preventDefault();
            var formData = new FormData($("#form_img")[0]);
            $.ajax({
                url : $("#form_img").attr('action'),
                type : 'POST',
                data : formData,
                contentType : false,
                processData : false,
                success: function(resp) {
                    console.log(resp);                        
                }
            });
        });
    });
</script>
<form action="http://localhost/upload_app/info/normal_upload" id="form_img" method="GET" role="form" enctype="multipart/form-data">
<input type="file" name="PDF">
<input type="file" name="MainImage">
<input type="file" name="SecondImage">
  <button type="submit">Submit </button>
</form>

相关内容

  • 没有找到相关文章

最新更新