我的视图中有几个输入字段与类似
<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>