ホームページ  >  記事  >  バックエンド開発  >  PHP はファイルのアップロードとダウンロードを実装します - ただ忙しいだけです

PHP はファイルのアップロードとダウンロードを実装します - ただ忙しいだけです

WBOY
WBOYオリジナル
2016-06-13 12:28:47807ブラウズ

PHP はファイルのアップロードとダウンロードを実装します - 私はただ忙しいだけです

今週は何も書いていません。はい、この 1 週間で運転以外はあまり新しいことを学びませんでした。

くそー、毎日正午に車の運転を習いに行き、その後2週間昼寝をしないのは、その後の仕事のプレッシャーと相まってとても憂鬱です。

でも、私はそこまで苦労に耐えられないのかもしれません。その日私が見た文章は何と言っていたでしょうか?私は単純さと難しさの間で前者を選んだ自分が嫌いです。バラバラはあまりチキンスープではありませんが、少し気取って気難しいことをしないようにしたいと思います。 。

PHP は、mooc ネットワークからのファイルのアップロードとダウンロードを実装します

1. アップロードの原則と構成

1.1原則

クライアント ファイル をサーバー にアップロードし、サーバー側ファイル (一時ファイル) を指定されたディレクトリ に移動します。

1.2 クライアント構成

必須: フォーム ページ (アップロード ファイルを選択)

具体的に:メソッドが POST の場合、enctype="multipart/form-data" 属性 を追加します。両方とも必須です (ただし、利点と欠点が両方存在します。ここでも、アップロード メソッドとアップロード後の呼び出しなどを制限します)。後で説明します)

<span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="Content-Type"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="text/html; charset=UTF-8"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>Insert title here<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">form </span><span style="color: #ff0000;">action</span><span style="color: #0000ff;">="doAction.php"</span><span style="color: #ff0000;"> method</span><span style="color: #0000ff;">="post"</span><span style="color: #ff0000;"> enctype</span><span style="color: #0000ff;">="multipart/form-data"</span><span style="color: #0000ff;">></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="上传"</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"></</span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">php</span><span style="color: #0000ff;">?></span><span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>

最初はフォーム ページです (フロントエンドの問題は自動的に無視してください...)。もう 1 つはフォームの属性です。 input type="file" で使用されています (php の強力な拡張などを反映)。

次に doAction

<?<span style="color: #000000;">php</span><span style="color: #008000;">//</span><span style="color: #008000;">$_FILES:文件上传变量//print_r($_FILES);</span><span style="color: #800080;">$filename</span>=<span style="color: #800080;">$_FILES</span>['myFile']['name'<span style="color: #000000;">];</span><span style="color: #800080;">$type</span>=<span style="color: #800080;">$_FILES</span>['myFile']['type'<span style="color: #000000;">];</span><span style="color: #800080;">$tmp_name</span>=<span style="color: #800080;">$_FILES</span>['myFile']['tmp_name'<span style="color: #000000;">];</span><span style="color: #800080;">$size</span>=<span style="color: #800080;">$_FILES</span>['myFile']['size'<span style="color: #000000;">];</span><span style="color: #800080;">$error</span>=<span style="color: #800080;">$_FILES</span>['myFile']['error'<span style="color: #000000;">];</span><span style="color: #008000;">//</span><span style="color: #008000;">将服务器上的临时文件移动到指定位置//方法一move_upload_file($tmp_name,$destination)//move_uploaded_file($tmp_name, "uploads/".$filename);//文件夹应提前建立好,不然报错//方法二copy($src,$des)//以上两个函数都是成功返回真,否则返回false//copy($tmp_name, "copies/".$filename);//注意,不能两个方法都对临时文件进行操作,临时文件似乎操作完就没了,我们试试反过来</span><span style="color: #008080;">copy</span>(<span style="color: #800080;">$tmp_name</span>, "copies/".<span style="color: #800080;">$filename</span><span style="color: #000000;">);</span><span style="color: #008080;">move_uploaded_file</span>(<span style="color: #800080;">$tmp_name</span>, "uploads/".<span style="color: #800080;">$filename</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">能够实现,说明move那个函数基本上相当于剪切;copy就是copy,临时文件还在//另外,错误信息也是不一样的,遇到错误可以查看或者直接报告给用户</span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$error</span>==0<span style="color: #000000;">) {    </span><span style="color: #0000ff;">echo</span> "上传成功!"<span style="color: #000000;">;}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{    </span><span style="color: #0000ff;">switch</span> (<span style="color: #800080;">$error</span><span style="color: #000000;">){        </span><span style="color: #0000ff;">case</span> 1:            <span style="color: #0000ff;">echo</span> "超过了上传文件的最大值,请上传2M以下文件"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 2:            <span style="color: #0000ff;">echo</span> "上传文件过多,请一次上传20个及以下文件!"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 3:            <span style="color: #0000ff;">echo</span> "文件并未完全上传,请再次尝试!"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 4:            <span style="color: #0000ff;">echo</span> "未选择上传文件!"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 5:            <span style="color: #0000ff;">echo</span> "上传文件为0"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;    }}</span>

まず情報 print_r($_FILES) を確認します

<span style="color: #000000;">Array(    [myFile] => Array        (            [name] => 梁博_简历.doc            [type] => application/msword            [tmp_name] => D:\wamp\tmp\php1D78.tmp            [error] => 0            [size] => 75776        ))

つまり、得られるのは 2 次元配列です。その使用方法はすべて基本的なものです (実際、私は次元を削減してから使用するのが好きです)。 >基本的には一目で理解できます。 重要な点は 2 つあります。

tmp_name 一時ファイル名、エラー メッセージ (コード名。後で使用できます)

; doAction の最後の部分でエラー メッセージを使用します。説明する必要があるのは、エラーが報告される理由とエラー メッセージの内容です。

--エラー報告の理由

基本的に、ファイルをアップロードするためのサーバーの設定を超えているか、準拠していません。それでは、サーバー側の 設定

?

まず、使用したものをアップロードすることを検討しますか? POST、アップロード

したがって、php.ini で次の項目を探します。

file_upload:On

upload_tmp_dir=——一時ファイル保存ディレクトリ

Upload_max_filesize =2M

max_file_uploads=20——一度にアップロードできるファイルの最大数 (上記との違いに注意してください。サイズがあるかどうかは考慮しないでください)

post_max_size=8M—post メソッド 送信データの最大値

その他の関連設定

max_exectuion_time=-1 - プログラムがサーバー リソースを占有することを避けるための最大実行時間

max_input_time=60

max_input_nesting_level=64 - 入力ネストの深さ;

memory_limit=128M - 単一スレッドの最大独立メモリ使用量

つまり、これがすべてです。リソース構成について。

--エラー番号

次の (怠惰な) 引用は http://blog.sina.com.cn/s/blog_3cdfaea201008utf.html

からのものです。

UPLOAD_ERR_OK 値: 0; エラーは発生せず、ファイルは正常にアップロードされました。

UPLOAD_ERR_INI_SIZE 値: 1; アップロードされたファイルは、php.ini の Upload_max_filesize オプションの制限を超えています。 UPLOAD_ERR_FORM_SIZE 値: 2; アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。 UPLOAD_ERR_PARTIAL 値: 3; ファイルの一部のみがアップロードされました。

UPLOAD_ERR_NO_FILE 値: 4; ファイルはアップロードされませんでした。

注: このエラー メッセージは、移動やコピーの場合ではなく、最初の手順、つまり一時フォルダーにアップロードする場合にアップロードされる情報です。



2. アップロード関連の制限

2.1 クライアントの制限

ここでは、アップロードされるファイルのサイズとタイプを制限するために入力属性が使用されていますが、私の個人的な感覚では、第一に HTML コードが「表示」され、第二に、機能しないことがよくあります ( 2.2 サーバー側の制限

主な制限はサイズとタイプで、もう 1 つはメソッドです。 ここでは、具体的な実装を自分で実際に試すことができます。

2.3 カプセル化
<span style="color: #0000ff;"><</span><span style="color: #800000;">form </span><span style="color: #ff0000;">action</span><span style="color: #0000ff;">="doAction2.php"</span><span style="color: #ff0000;"> method</span><span style="color: #0000ff;">="post"</span><span style="color: #ff0000;"> enctype</span><span style="color: #0000ff;">="multipart/form-data"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="hidden"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="MAX_FILE_SIZE"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="101321"</span> <span style="color: #0000ff;">/></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile"</span><span style="color: #ff0000;"> accept</span><span style="color: #0000ff;">="image/jpeg,image/gif,text/html"</span><span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="上传"</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"></</span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span>
関数

呼び出し

<?<span style="color: #000000;">php</span><span style="color: #008080;">header</span>('content-type:text/html;charset=utf-8'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">接受文件,临时文件信息</span><span style="color: #800080;">$fileinfo</span>=<span style="color: #800080;">$_FILES</span>["myFile"];<span style="color: #008000;">//</span><span style="color: #008000;">降维操作</span><span style="color: #800080;">$filename</span>=<span style="color: #800080;">$fileinfo</span>["name"<span style="color: #000000;">];</span><span style="color: #800080;">$tmp_name</span>=<span style="color: #800080;">$fileinfo</span>["tmp_name"<span style="color: #000000;">];</span><span style="color: #800080;">$size</span>=<span style="color: #800080;">$fileinfo</span>["size"<span style="color: #000000;">];</span><span style="color: #800080;">$error</span>=<span style="color: #800080;">$fileinfo</span>["error"<span style="color: #000000;">];</span><span style="color: #800080;">$type</span>=<span style="color: #800080;">$fileinfo</span>["type"<span style="color: #000000;">];</span><span style="color: #008000;">//</span><span style="color: #008000;">服务器端设定限制</span><span style="color: #800080;">$maxsize</span>=10485760;<span style="color: #008000;">//</span><span style="color: #008000;">10M,10*1024*1024</span><span style="color: #800080;">$allowExt</span>=<span style="color: #0000ff;">array</span>('jpeg','jpg','png','tif');<span style="color: #008000;">//</span><span style="color: #008000;">允许上传的文件类型(拓展名</span><span style="color: #800080;">$ext</span>=<span style="color: #008080;">pathinfo</span>(<span style="color: #800080;">$filename</span>,PATHINFO_EXTENSION);<span style="color: #008000;">//</span><span style="color: #008000;">提取上传文件的拓展名//目的信息</span><span style="color: #800080;">$path</span>="uploads"<span style="color: #000000;">;</span><span style="color: #0000ff;">if</span> (!<span style="color: #008080;">file_exists</span>(<span style="color: #800080;">$path</span>)) {   <span style="color: #008000;">//</span><span style="color: #008000;">当目录不存在,就创建目录</span>    <span style="color: #008080;">mkdir</span>(<span style="color: #800080;">$path</span>,0777,<span style="color: #0000ff;">true</span><span style="color: #000000;">);    </span><span style="color: #008080;">chmod</span>(<span style="color: #800080;">$path</span>, 0777<span style="color: #000000;">);}</span><span style="color: #008000;">//</span><span style="color: #008000;">$destination=$path."/".$filename;//得到唯一的文件名!防止因为文件名相同而产生覆盖</span><span style="color: #800080;">$uniName</span>=<span style="color: #008080;">md5</span>(<span style="color: #008080;">uniqid</span>(<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span>),<span style="color: #0000ff;">true</span>)).<span style="color: #800080;">$ext</span>;<span style="color: #008000;">//</span><span style="color: #008000;">md5加密,uniqid产生唯一id,microtime做前缀</span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$error</span>==0<span style="color: #000000;">) {    </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$size</span>><span style="color: #800080;">$maxsize</span><span style="color: #000000;">) {        </span><span style="color: #0000ff;">exit</span>("上传文件过大!"<span style="color: #000000;">);    }    </span><span style="color: #0000ff;">if</span> (!<span style="color: #008080;">in_array</span>(<span style="color: #800080;">$ext</span>, <span style="color: #800080;">$allowExt</span><span style="color: #000000;">)) {        </span><span style="color: #0000ff;">exit</span>("非法文件类型"<span style="color: #000000;">);    }    </span><span style="color: #0000ff;">if</span> (!<span style="color: #008080;">is_uploaded_file</span>(<span style="color: #800080;">$tmp_name</span><span style="color: #000000;">)) {        </span><span style="color: #0000ff;">exit</span>("上传方式有误,请使用post方式"<span style="color: #000000;">);    }    </span><span style="color: #0000ff;">if</span> (@<span style="color: #008080;">move_uploaded_file</span>(<span style="color: #800080;">$tmp_name</span>, <span style="color: #800080;">$uniName</span>)) {<span style="color: #008000;">//</span><span style="color: #008000;">@错误抑制符,不让用户看到警告</span>        <span style="color: #0000ff;">echo</span> "文件".<span style="color: #800080;">$filename</span>."上传成功!"<span style="color: #000000;">;    }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{        </span><span style="color: #0000ff;">echo</span> "文件".<span style="color: #800080;">$filename</span>."上传失败!"<span style="color: #000000;">;    }    </span><span style="color: #008000;">//</span><span style="color: #008000;">判断是否为真实图片(防止伪装成图片的病毒一类的</span>    <span style="color: #0000ff;">if</span> (!<span style="color: #008080;">getimagesize</span>(<span style="color: #800080;">$tmp_name</span>)) {<span style="color: #008000;">//</span><span style="color: #008000;">getimagesize真实返回数组,否则返回false</span>        <span style="color: #0000ff;">exit</span>("不是真正的图片类型"<span style="color: #000000;">);    }}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{    </span><span style="color: #0000ff;">switch</span> (<span style="color: #800080;">$error</span><span style="color: #000000;">){        </span><span style="color: #0000ff;">case</span> 1:            <span style="color: #0000ff;">echo</span> "超过了上传文件的最大值,请上传2M以下文件"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 2:            <span style="color: #0000ff;">echo</span> "上传文件过多,请一次上传20个及以下文件!"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 3:            <span style="color: #0000ff;">echo</span> "文件并未完全上传,请再次尝试!"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 4:            <span style="color: #0000ff;">echo</span> "未选择上传文件!"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">case</span> 7:            <span style="color: #0000ff;">echo</span> "没有临时文件夹"<span style="color: #000000;">;            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;    }}</span>

3. 複数ファイルのアップロードの実装

3.1 利用单文件封装

<span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="Content-Type"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="text/html; charset=UTF-8"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>Insert title here<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">form </span><span style="color: #ff0000;">action</span><span style="color: #0000ff;">="doAction5.php"</span><span style="color: #ff0000;"> method</span><span style="color: #0000ff;">="post"</span><span style="color: #ff0000;"> enctype</span><span style="color: #0000ff;">="multipart/form-data"</span><span style="color: #0000ff;">></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile1"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile2"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile3"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile4"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="上传"</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"></</span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>
<?<span style="color: #000000;">php</span><span style="color: #008000;">//</span><span style="color: #008000;">print_r($_FILES);</span><span style="color: #008080;">header</span>('content-type:text/html;charset=utf-8'<span style="color: #000000;">);</span><span style="color: #0000ff;">include_once</span> 'upFunc.php'<span style="color: #000000;">;</span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">$_FILES</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$fileInfo</span><span style="color: #000000;">){    </span><span style="color: #800080;">$file</span>[]=uploadFile(<span style="color: #800080;">$fileInfo</span><span style="color: #000000;">);}</span>

 

这里的思路,从print_r($_FILES)中去找,打印出来看到是个二维数组,很简单,遍历去用就好了! 

上面那个function的定义改一下,给定一些默认值

<span style="color: #0000ff;">function</span> uploadFile(<span style="color: #800080;">$fileInfo</span>,<span style="color: #800080;">$path</span>="uploads",<span style="color: #800080;">$allowExt</span>=<span style="color: #0000ff;">array</span>('jpeg','jpg','png','tif'),<span style="color: #800080;">$maxSize</span>=10485760){

 

这样子,简单是简单,但遇到一些问题。

正常的上传4个图片是没问题,但要是中间激活了函数中的exit,就会立即停止,导致其他图片也无法上传。

3.2 升级版封装

旨在实现针对多个或单个文件上传的封装

首先这样子写个静态文件

<span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="Content-Type"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="text/html; charset=UTF-8"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>Insert title here<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">form </span><span style="color: #ff0000;">action</span><span style="color: #0000ff;">="doAction5.php"</span><span style="color: #ff0000;"> method</span><span style="color: #0000ff;">="post"</span><span style="color: #ff0000;"> enctype</span><span style="color: #0000ff;">="multipart/form-data"</span><span style="color: #0000ff;">></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile[]"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile[]"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile[]"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile[]"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="上传"</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"></</span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>

 

打印一下$_FILES

<span style="color: #000000;">Array(    [myFile] => Array        (            [name] => Array                (                    [0] => test32.png                    [1] => test32.png                    [2] => 333.png                    [3] => test41.png                )            [type] => Array                (                    [0] => image/png                    [1] => image/png                    [2] => image/png                    [3] => image/png                )            [tmp_name] => Array                (                    [0] => D:\wamp\tmp\php831C.tmp                    [1] => D:\wamp\tmp\php834C.tmp                    [2] => D:\wamp\tmp\php837C.tmp                    [3] => D:\wamp\tmp\php83BB.tmp                )            [error] => Array                (                    [0] => 0                    [1] => 0                    [2] => 0                    [3] => 0                )            [size] => Array                (                    [0] => 46174                    [1] => 46174                    [2] => 34196                    [3] => 38514                )        ))</span>

 

可以得到一个三维数组。

复杂是复杂了,但复杂的有规律,各项数值都在一起了,很方便我们取值!!

所以先得到文件信息,变成单文件处理那种信息

<span style="color: #0000ff;">function</span><span style="color: #000000;"> getFiles(){    </span><span style="color: #800080;">$i</span>=0<span style="color: #000000;">;    </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$_FILES</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$file</span><span style="color: #000000;">){        </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_string</span>(<span style="color: #800080;">$file</span>['name'])){  <span style="color: #008000;">//</span><span style="color: #008000;">单文件判定</span>            <span style="color: #800080;">$files</span>[<span style="color: #800080;">$i</span>]=<span style="color: #800080;">$file</span><span style="color: #000000;">;            </span><span style="color: #800080;">$i</span>++<span style="color: #000000;">;        }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">is_array</span>(<span style="color: #800080;">$file</span>['name'<span style="color: #000000;">])){            </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$file</span>['name'] <span style="color: #0000ff;">as</span> <span style="color: #800080;">$key</span>=><span style="color: #800080;">$val</span>){  <span style="color: #008000;">//</span><span style="color: #008000;">我的天,这个$key用的diao</span>                <span style="color: #800080;">$files</span>[<span style="color: #800080;">$i</span>]['name']=<span style="color: #800080;">$file</span>['name'][<span style="color: #800080;">$key</span><span style="color: #000000;">];                </span><span style="color: #800080;">$files</span>[<span style="color: #800080;">$i</span>]['type']=<span style="color: #800080;">$file</span>['type'][<span style="color: #800080;">$key</span><span style="color: #000000;">];                </span><span style="color: #800080;">$files</span>[<span style="color: #800080;">$i</span>]['tmp_name']=<span style="color: #800080;">$file</span>['tmp_name'][<span style="color: #800080;">$key</span><span style="color: #000000;">];                </span><span style="color: #800080;">$files</span>[<span style="color: #800080;">$i</span>]['error']=<span style="color: #800080;">$file</span>['error'][<span style="color: #800080;">$key</span><span style="color: #000000;">];                </span><span style="color: #800080;">$files</span>[<span style="color: #800080;">$i</span>]['size']=<span style="color: #800080;">$file</span>['size'][<span style="color: #800080;">$key</span><span style="color: #000000;">];                </span><span style="color: #800080;">$i</span>++<span style="color: #000000;">;            }        }    }    </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$files</span><span style="color: #000000;">;    }</span>

 

然后之前的那种exit错误,就把exit改一下就好了,这里用res

<span style="color: #0000ff;">function</span> uploadFile(<span style="color: #800080;">$fileInfo</span>,<span style="color: #800080;">$path</span>='./uploads',<span style="color: #800080;">$flag</span>=<span style="color: #0000ff;">true</span>,<span style="color: #800080;">$maxSize</span>=1048576,<span style="color: #800080;">$allowExt</span>=<span style="color: #0000ff;">array</span>('jpeg','jpg','png','gif'<span style="color: #000000;">)){    </span><span style="color: #008000;">//</span><span style="color: #008000;">$flag=true;    //$allowExt=array('jpeg','jpg','gif','png');    //$maxSize=1048576;//1M    //判断错误号</span>    <span style="color: #800080;">$res</span>=<span style="color: #0000ff;">array</span><span style="color: #000000;">();    </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$fileInfo</span>['error']===<span style="color: #000000;">UPLOAD_ERR_OK){        </span><span style="color: #008000;">//</span><span style="color: #008000;">检测上传得到小</span>        <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$fileInfo</span>['size']><span style="color: #800080;">$maxSize</span><span style="color: #000000;">){            </span><span style="color: #800080;">$res</span>['mes']=<span style="color: #800080;">$fileInfo</span>['name'].'上传文件过大'<span style="color: #000000;">;        }        </span><span style="color: #800080;">$ext</span>=getExt(<span style="color: #800080;">$fileInfo</span>['name'<span style="color: #000000;">]);        </span><span style="color: #008000;">//</span><span style="color: #008000;">检测上传文件的文件类型</span>        <span style="color: #0000ff;">if</span>(!<span style="color: #008080;">in_array</span>(<span style="color: #800080;">$ext</span>,<span style="color: #800080;">$allowExt</span><span style="color: #000000;">)){            </span><span style="color: #800080;">$res</span>['mes']=<span style="color: #800080;">$fileInfo</span>['name'].'非法文件类型'<span style="color: #000000;">;        }        </span><span style="color: #008000;">//</span><span style="color: #008000;">检测是否是真实的图片类型</span>        <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$flag</span><span style="color: #000000;">){            </span><span style="color: #0000ff;">if</span>(!<span style="color: #008080;">getimagesize</span>(<span style="color: #800080;">$fileInfo</span>['tmp_name'<span style="color: #000000;">])){                </span><span style="color: #800080;">$res</span>['mes']=<span style="color: #800080;">$fileInfo</span>['name'].'不是真实图片类型'<span style="color: #000000;">;            }        }        </span><span style="color: #008000;">//</span><span style="color: #008000;">检测文件是否是通过HTTP POST上传上来的</span>        <span style="color: #0000ff;">if</span>(!<span style="color: #008080;">is_uploaded_file</span>(<span style="color: #800080;">$fileInfo</span>['tmp_name'<span style="color: #000000;">])){            </span><span style="color: #800080;">$res</span>['mes']=<span style="color: #800080;">$fileInfo</span>['name'].'文件不是通过HTTP POST方式上传上来的'<span style="color: #000000;">;        }        </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$res</span>) <span style="color: #0000ff;">return</span> <span style="color: #800080;">$res</span><span style="color: #000000;">;        </span><span style="color: #008000;">//</span><span style="color: #008000;">$path='./uploads';</span>        <span style="color: #0000ff;">if</span>(!<span style="color: #008080;">file_exists</span>(<span style="color: #800080;">$path</span><span style="color: #000000;">)){            </span><span style="color: #008080;">mkdir</span>(<span style="color: #800080;">$path</span>,0777,<span style="color: #0000ff;">true</span><span style="color: #000000;">);            </span><span style="color: #008080;">chmod</span>(<span style="color: #800080;">$path</span>,0777<span style="color: #000000;">);        }        </span><span style="color: #800080;">$uniName</span>=<span style="color: #000000;">getUniName();        </span><span style="color: #800080;">$destination</span>=<span style="color: #800080;">$path</span>.'/'.<span style="color: #800080;">$uniName</span>.'.'.<span style="color: #800080;">$ext</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">if</span>(!<span style="color: #008080;">move_uploaded_file</span>(<span style="color: #800080;">$fileInfo</span>['tmp_name'],<span style="color: #800080;">$destination</span><span style="color: #000000;">)){            </span><span style="color: #800080;">$res</span>['mes']=<span style="color: #800080;">$fileInfo</span>['name'].'文件移动失败'<span style="color: #000000;">;        }        </span><span style="color: #800080;">$res</span>['mes']=<span style="color: #800080;">$fileInfo</span>['name'].'上传成功'<span style="color: #000000;">;        </span><span style="color: #800080;">$res</span>['dest']=<span style="color: #800080;">$destination</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$res</span><span style="color: #000000;">;            }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{        </span><span style="color: #008000;">//</span><span style="color: #008000;">匹配错误信息</span>        <span style="color: #0000ff;">switch</span> (<span style="color: #800080;">$fileInfo</span> ['error'<span style="color: #000000;">]) {            </span><span style="color: #0000ff;">case</span> 1 :                <span style="color: #800080;">$res</span>['mes'] = '上传文件超过了PHP配置文件中upload_max_filesize选项的值'<span style="color: #000000;">;                </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;            </span><span style="color: #0000ff;">case</span> 2 :                <span style="color: #800080;">$res</span>['mes'] = '超过了表单MAX_FILE_SIZE限制的大小'<span style="color: #000000;">;                </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;            </span><span style="color: #0000ff;">case</span> 3 :                <span style="color: #800080;">$res</span>['mes'] = '文件部分被上传'<span style="color: #000000;">;                </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;            </span><span style="color: #0000ff;">case</span> 4 :                <span style="color: #800080;">$res</span>['mes'] = '没有选择上传文件'<span style="color: #000000;">;                </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;            </span><span style="color: #0000ff;">case</span> 6 :                <span style="color: #800080;">$res</span>['mes'] = '没有找到临时目录'<span style="color: #000000;">;                </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;            </span><span style="color: #0000ff;">case</span> 7 :            <span style="color: #0000ff;">case</span> 8 :                <span style="color: #800080;">$res</span>['mes'] = '系统错误'<span style="color: #000000;">;                </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;        }        </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$res</span><span style="color: #000000;">;    }}</span>

 

里面封装了两个小的

<span style="color: #0000ff;">function</span> getExt(<span style="color: #800080;">$filename</span><span style="color: #000000;">){    </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">strtolower</span>(<span style="color: #008080;">pathinfo</span>(<span style="color: #800080;">$filename</span>,<span style="color: #000000;">PATHINFO_EXTENSION));}</span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 产生唯一字符串 * @return string </span><span style="color: #008000;">*/</span><span style="color: #0000ff;">function</span><span style="color: #000000;"> getUniName(){    </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">md5</span>(<span style="color: #008080;">uniqid</span>(<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span>),<span style="color: #0000ff;">true</span><span style="color: #000000;">));}</span>

 

然后静态中,用multiple属性实现多个文件的输入;

<span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="Content-Type"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="text/html; charset=UTF-8"</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>Insert title here<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"><</span><span style="color: #800000;">form </span><span style="color: #ff0000;">action</span><span style="color: #0000ff;">="doAction6.php"</span><span style="color: #ff0000;"> method</span><span style="color: #0000ff;">="POST"</span><span style="color: #ff0000;"> enctype</span><span style="color: #0000ff;">="multipart/form-data"</span><span style="color: #0000ff;">></span><span style="color: #000000;">请选择您要上传的文件:</span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="file"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="myFile[]"</span><span style="color: #ff0000;"> multiple</span><span style="color: #0000ff;">='multiple' </span><span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="上传"</span><span style="color: #0000ff;">/></span><span style="color: #0000ff;"></</span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>

 

doAction6

<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">print_r($_FILES);</span><span style="color: #008080;">header</span>("content-type:text/html;charset=utf-8"<span style="color: #000000;">);</span><span style="color: #0000ff;">require_once</span> 'upFunc2.php'<span style="color: #000000;">;</span><span style="color: #0000ff;">require_once</span> 'common.func.php'<span style="color: #000000;">;</span><span style="color: #800080;">$files</span>=<span style="color: #000000;">getFiles();</span><span style="color: #008000;">//</span><span style="color: #008000;"> print_r($files);</span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$files</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$fileInfo</span><span style="color: #000000;">){    </span><span style="color: #800080;">$res</span>=uploadFile(<span style="color: #800080;">$fileInfo</span><span style="color: #000000;">);    </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$res</span>['mes'],'<br/>'<span style="color: #000000;">;    </span><span style="color: #800080;">$uploadFiles</span>[]=@<span style="color: #800080;">$res</span>['dest'<span style="color: #000000;">];}</span><span style="color: #800080;">$uploadFiles</span>=<span style="color: #008080;">array_values</span>(<span style="color: #008080;">array_filter</span>(<span style="color: #800080;">$uploadFiles</span><span style="color: #000000;">));</span><span style="color: #008000;">//</span><span style="color: #008000;">print_r($uploadFiles);</span>

 

这样子的几个文件,就实现比较强大的面向过程的上传文件的功能(学的叫一个心酸。。。);

四、面向对象的文件上传

 (不是很写的动了。。。先粘过来,再说吧。。。

<?<span style="color: #000000;">php </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Upload{ </span><span style="color: #0000ff;">protected</span> <span style="color: #800080;">$fileName</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護されています</span> <span style="color: #800080;">$maxSize</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護されました</span> <span style="color: #800080;">$allowMime</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護されました</span> <span style="color: #800080;">$allowExt</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護</span> <span style="color: #800080;">$uploadPath</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護されました</span> <span style="color: #800080;">$imgFlag</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護されました</span> <span style="color: #800080;">$fileInfo</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護されました</span> <span style="color: #800080;">$error</span><span style="color: #000000;">;    </span><span style="color: #0000ff;">保護されました</span> <span style="color: #800080;">$ext</span><span style="color: #000000;">;    </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * @param string $fileName * @param string $uploadPath * @param string $imgFlag * @param 番号 $maxSize * @param 配列 $allowExt * @param 配列 $ allowMime </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$fileName</span>='myFile',<span style="color: #800080;">$uploadPath</span>= './uploads'、<span style="color: #800080;">$imgFlag</span>=<span style="color: #0000ff;">true</span>、<span style="color: #800080;">$maxSize</span>=5242880、<span style="color: #800080;">$allowExt</span>=<span style="color: #0000ff;">配列</span> ('jpeg','jpg','png','gif'),<span style="color: #800080;">$allowMime</span>=<span style="color: #0000ff;">array</span>('image/jpeg','image/png','image/ gif'<span style="color: #000000;">)){ </span><span style="color: #800080;">$this</span>->fileName=<span style="color: #800080;">$fileName</span><span style="color: #000000;">;        </span><span style="color: #800080;">$this</span>->maxSize=<span style="color: #800080;">$maxSize</span><span style="color: #000000;">;        </span><span style="color: #800080;">$this</span>->allowMime=<span style="color: #800080;">$allowMime</span><span style="color: #000000;">;        </span><span style="color: #800080;">$this</span>->allowExt=<span style="color: #800080;">$allowExt</span><span style="color: #000000;">;        </span><span style="color: #800080;">$this</span>->uploadPath=<span style="color: #800080;">$uploadPath</span><span style="color: #000000;">;        </span><span style="color: #800080;">$this</span>->imgFlag=<span style="color: #800080;">$imgFlag</span><span style="color: #000000;">;        </span><span style="color: #800080;">$this</span>->fileInfo=<span style="color: #800080;">$_FILES</span>[<span style="color: #800080;">$this</span>-><span style="color: #000000;">ファイル名];    }</span><span style="color: #008000;">/*</span><span style="color: #008000;">* * ファイルのアップロードにエラーがないか確認します* @return boolean </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">function</span> <span style="color: #000000;"> checkError(){ </span><span style="color: #0000ff;">if</span>(!<span style="color: #008080;">is_null</span>(<span style="color: #800080;">$this</span>-><span style="color: #000000;">fileInfo)){ </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$this</span>->fileInfo['error']>0<span style="color: #000000;">){ </span><span style="color: #0000ff;">switch</span>(<span style="color: #800080;"> $this</span> ->fileInfo['error'<span style="color: #000000;">]){ </span><span style="color: #0000ff;">case</span> 1: <span style="color: #800080;">$this</span>->error='の値を超えましたPHP 設定ファイル '<span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #000000;"> 2: </span>$this<span style="color: #0000ff;">->エラー='設定値の MAX_FILE_SIZE を超えました'</span>; <span style="color: #800080;"></span>break<span style="color: #000000;"></span> 3: <span style="color: #0000ff;">$this</span>-&gt ;error='ファイル セクションがアップロードされました'<span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #800080;"> 4: </span>$this<span style="color: #000000;">->エラー='ファイルをアップロードするオプションはありません'</span><span style="color: #0000ff;">break</span><span style="color: #000000;">; </span><span style="color: #0000ff;">case</span> 6: <span style="color: #800080;">$this</span>->エラー='一時ディレクトリが見つかりません '<span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #000000;"> 7: </span>$this<span style="color: #0000ff;">->error= 'ファイルは書き込みできません'</span>; <span style="color: #800080;"></span>break<span style="color: #000000;"></span> 8: <span style="color: #0000ff;">$this</span>->error='ファイルPHP 拡張機能のアップロードにより壊れました'<span style="color: #000000;"></span>break<span style="color: #0000ff;"></span> } <span style="color: #800080;"></span>return<span style="color: #000000;"> </span>false<span style="color: #0000ff;"></span>; ><span style="color: #000000;">else </span><span style="color: #0000ff;">{ </span><span style="color: #800080;">return</span> <span style="color: #000000;">true</span><span style="color: #0000ff;"> } }</span><span style="color: #000000;">else</span><span style="color: #0000ff;">{ </span><span style="color: #0000ff;"> $this</span>->error='ファイルアップロードエラー'<span style="color: #000000;">; </span><span style="color: #0000ff;">return</span> <span style="color: #000000;">false</span><span style="color: #0000ff;">; </span>/* <span style="color: #0000ff;"></span>* * アップロードされたファイルのサイズを確認します* @return boolean <span style="color: #000000;"></span>*/<span style="color: #0000ff;"> </span>protected<span style="color: #000000;"> </span>function<span style="color: #800080;"></span> checkSize(){ <span style="color: #000000;"></span>if<span style="color: #0000ff;">(</span>$this<span style="color: #0000ff;">->fileInfo['size']></span>$this<span style="color: #000000;">-></span> maxSize){ <span style="color: #008000;"></span>$this<span style="color: #008000;">->error='アップロードされたファイルが大きすぎます'</span>; <span style="color: #008000;"></span>return<span style="color: #0000ff;"> </span>false<span style="color: #0000ff;">; } </span><span style="color: #000000;"> return</span> <span style="color: #0000ff;">true</span><span style="color: #800080;"> } </span><span style="color: #800080;">/*</span><span style="color: #000000;">* * 拡張子を検出</span>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。