Home Backend Development PHP Tutorial Summary of PHP multi-file upload understanding_PHP tutorial

Summary of PHP multi-file upload understanding_PHP tutorial

Jul 20, 2016 am 11:11 AM
file html php upload effect add name back Summarize document Label understand of type want enter

Add [] after the name in the FILE type of the input tag of the uploaded file HTML. The function is to create an array in the HTML to PHP. For example, the name is pictures, and the multiple file reference name is pictures[]. The example is as follows:

The code is as follows Copy code td>
 代码如下 复制代码

<form action=”upload.php” method=”post” enctype=”multipart/form-data”>
<p>
<input type=”file” name=”pictures[]” /><br />
<input type=”file” name=”pictures[]” /><br />
<input type=”file” name=”pictures[]” /><br />
<input type=”submit” value=”上传” />
</p>
</form> //手册中实例。

<form action=”upload.php” method=”post” enctype=”multipart/form-data”>
<p>
<input type=”file” name= ”pictures[]” /><br />
<input type=”file” name=”pictures[]” /><br />
<input type =”file” name=”pictures[]” /><br />
<input type=”submit” value=”Upload” />
</p></form> //Examples in the manual.

Select the file and click upload
 代码如下 复制代码

<?php
print_r($_FILES);
?>

The code is as follows Copy code

<?php
print_r($_FILES);
?>

 代码如下 复制代码
Array
(
[pictures] => Array
(
[name] => Array
(
[0] => file1.txt
[1] => file2.txt
[2] => file3.txt
)
[type] => Array
(
[0] => application/octet-stream
[1] => application/octet-stream
[2] => application/octet-stream
)
[tmp_name] => Array
(
[0] => D:EasyPHPtmpphp47.tmp
[1] => D:EasyPHPtmpphp48.tmp
[2] => D:EasyPHPtmpphp49.tmp
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
)
[size] => Array
(
[0] => 94289
[1] => 65536
[2] => 102400
)
)
)
View source file:

Assuming files named /file1.txt?? and /file2.txt are submitted, the value of $_FILES['pictures']['name'][0] will be file1.txt, and $_FILES[ The value of 'pictures']['name'][1] will be file2.txt. Similarly, $_FILES['file2.txt']['size'][0] will contain the size of file file1.txt.

With the above information, it is simple for us to upload multiple files

The code is as follows Copy code

<?php

class upload {
public $up_ext=array(), $up_max=5210, $up_dir;
private $up_name, $up_rename=true, $up_num=0, $up_files=array(), $up_ret=array();

function __construct($name, $ext=array(), $rename=true) {
if (!empty($name)) {
$this->up_name = $name;
!empty($ext) && $this->up_ext = $ext;
$this->up_rename = $rename;
$this->up_dir = website_dirroot.
$globals ['cfg_upload_path'];
$this->initupload();
} else {
exit('The upload file domain name is empty, initialization failed!');
}
}

private function initupload() {
if (is_array($_files[$this->up_name])) {
$up_arr = count($_files[$this->up_name ]);
$up_all = count($_files[$this->up_name], 1);
$up_cnt = ($up_all - $up_arr) / $up_arr;
for ($i = 0; $i < $up_cnt; $i ++) {
if ($_files[$this->up_name]['error'][$i] != 4) {
$this- >up_files[] = array(
'tmp_name' => $_files[$this->up_name]['tmp_name'][$i],
'name' => $_files[$ this->up_name]['name'][$i],
'type' => $_files[$this->up_name]['type'][$i],
'size ' => $_files[$this->up_name]['size'][$i],
'error' => $_files[$this->up_name]['error'][$ i]
);
}
}
$this->up_num = count($this->up_files);
} else {
if (isset($_files [$this->up_name])) {
$this->up_files = array(
'tmp_name' => $_files[$this->up_name]['tmp_name'],
'name' => $_files[$this->up_name]['name'],
'type' => $_files[$this->up_name]['type'],
'size' => $_files[$this->up_name]['size'],
'error' => $_files[$this->up_name]['error']
);
$this->up_num = 1;
} else {
exit('The file that needs to be uploaded was not found! ');
}
}

$this->chkupload();
}

private function chkupload() {
if (empty($ this->up_ext)) {
$up_mime = array('image/wbmp', 'image/bmp', 'image/gif', 'image/pjpeg', 'image/x-png');
foreach ($this->up_files as $up_file) {
$up_allw = false;
foreach ($up_mime as $mime) {
if ($up_file['type'] == $ mime) {
$up_allw = true; break;
}
}
!$up_allw && exit('Not allowed to upload files in '.$up_file['type'].' format!' );

if ($up_file['size'] / 1024 > $this->up_max) {
exit('Uploads larger than '.$this->up_max.'k are not allowed ');
}
}
} else {
foreach ($this->up_files as $up_file) {
$up_ext = end(explode('.', $up_file['name']));

$up_allw = false;
foreach ($this->up_ext as $ext) {
if ($up_ext == $ext) {
$up_allw = true; break;
}
}
!$up_allw && exit('Uploading of files in the format of .'.$up_ext.' is not allowed!');

if ($up_file['size'] / 1024 > $this->up_max) {
exit('Files larger than '.$this->up_max.'k are not allowed to be uploaded!');
}
}
}

$this->uploading();
}

private function uploading() {
if (io:: dircreate($this->up_dir)) {
if (chmod($this->up_dir, 0777)) {
if (!empty($this->up_files)) {
foreach ($this->up_files as $up_file) {
if (is_uploaded_file($up_file['tmp_name'])) {
$file_name = $up_file['name'];
if ($this ->up_rename) {
$file_ext = end(explode('.', $file_name));
$file_rnd = substr(md5(uniqid()), mt_rand(0, 26), 6);
$file_name = date('ymdhis').'_'.$file_rnd.'.'.$file_ext;
}
$file_name = $this->up_dir.'/'.$file_name ;

if (move_uploaded_file($up_file['tmp_name'], $file_name)) {
$this->up_ret[] = str_replace(website_dirroot, '', $file_name);
} else {
exit('File upload failed! ');
}
}
}
}
} else {
exit('Write permission is not enabled!');
}
} else {
exit('Failed to create upload directory!');
}
}

public function getupload() {
return empty($this->up_ret) ? false : $this->up_ret;
}

function __destruct() {}
}
?>

Above we will see a for ($i = 0; $i < $up_cnt; $i ++) , This is a traversal of the examples we talked about above.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/444622.htmlTechArticleAdd [] after the name in the FILE type of the input tag of the uploaded file. The function is to upload the file to PHP in the HTML. Create an array, for example, the name is pictures, and the multiple file reference name is pictures[]. The example is as follows...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

CakePHP Date and Time

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

CakePHP Project Configuration

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

CakePHP File upload

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

CakePHP Routing

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

Discuss CakePHP

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP Quick Guide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

How To Set Up Visual Studio Code (VS Code) for PHP Development

See all articles