ホームページ >バックエンド開発 >PHPチュートリアル >PHP マルチファイルアップロードの理解のまとめ_PHP チュートリアル

PHP マルチファイルアップロードの理解のまとめ_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:11:40991ブラウズ

アップロードしたファイルのHTMLのinputタグのFILE型の名前の後ろに[]を付けると、PHPのHTML内に配列が作成されます。例えば、名前はpictures、複数のファイル参照名はpictures[です。 ] の例は次のとおりです。

コードは次のとおりです コードをコピー


gt;



gt;


< ;/p>

//マニュアルの例。

ファイルを選択してアップロードをクリック

コードは次のとおりです コードをコピー

print_r($_FILES);
?>

ソースファイルを表示:

コードは次のとおりです コードをコピーします
Array
(
[pictures] => Array
(
[name] => Array
(
[0] = > ファイル 1.txt
[1] => ファイル 2.txt
)
[タイプ] => アプリケーション/オクテット ストリーム[1] => application/octet -stream
[2] => application/octet-stream
)
[tmp_name] => Array
(
[0] => D:EasyPHPtmpphp47.tmp
[1] = > D:EasyPHPtmpphp48.tmp
[2] => D:EasyPHPtmpphp49.tmp
)
[エラー] => 配列
(
[0] => 0
[1] => 0
[2] ] => 0
)
[サイズ] => 配列
(
[0] => 94289
[1] => 65536
[2] => 102400
)
)



/file1.txt?? および /file2.txt という名前のファイルが送信されたと仮定すると、$_FILES['pictures']['name'][0] の値は file1.txt になり、$_FILES['pictures の値は']['name'][1] のファイルは file2.txt になります。同様に、$_FILES['file2.txt']['size'][0] には、ファイル file1.txt のサイズが含まれます

上記の情報を使用すると、複数のファイルを簡単にアップロードできます

コード以下の通り コードをコピーします

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_rename = $rename;
$this->up_dir =
$globals ['cfg_upload_path'];
$this->initupload();
exit('アップロード ファイルのドメイン名が空です。初期化に失敗しました!');
}

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 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' => >up_name ]['type'][$i],
'size' => $_files[$this->up_name]['size'][$i],
'error' => [$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']
); ;
} else {
exit('アップロードする必要のあるファイルが見つかりませんでした! ');
}

$this->chkupload();
}

プライベート関数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;
}
}
!$up_allw && exit('アップロードは許可されません'.$up_file['type'].' 形式ファイル! ');

if ($up_file['size'] / 1024 > $this->up_max) {
exit('次のサイズより大きいファイルはアップロードできません' .$this->up_max.'k ファイル! ');
}
}

} 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;

}

}
!$up_allw && exit('.'.$up_ext.' 形式でのファイルのアップロードは許可されていません!');

if ($up_file['size'] / 1024 > $this-> up_max ) {
exit('.$this->up_max.'k!' を超えるファイルのアップロードを許可しない)
}
}

}


$this->uploading();プライベート関数 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']; -> ;up_rename) {

$file_ext = end(explode('.', $file_name))

$file_rnd = substr(md5(uniqid()), mt_rand(0, 26), 6); 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('ファイルのアップロードに失敗しました! ');
}
}
}
}
} else {

exit('書き込み権限が有効になっていません!');

}
} else {
exit('アップロード ディレクトリの作成に失敗しました!'); }

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

function __destruct() {}
}
?>

in上には、上で説明したインスタンスを横断する for ($i = 0; $i < $up_cnt; $i ++) が表示されます。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444622.html技術記事アップロードしたファイルのHTMLのinputタグのFILE型の名前の後ろに[]を付けると、PHPのHTML内に配列が作成されます。例えば、名前はpictures、複数のファイル参照名はpictures[です。 】の例は以下の通りです…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。