この記事では、PHP でファイルのアップロードとダウンロードを実装する方法を紹介しますので、参考にしてください。編集者をフォローして見てみましょう。
1. アップロードの原理と構成
1.1原則
クライアントファイルをサーバーにアップロードし、サーバーファイル(一時ファイル)を指定されたディレクトリに移動します。
1.2 クライアント設定
必須: フォームページ (アップロードファイルを選択);
具体的には、送信方法はPOST、enctype="multipart/form-data"属性を追加、どちらも必須です(ただし、メリットとデメリットが混在しており、ここではアップロード方法やアップロード後の呼び出しなども制限されています)。 、後述します)
その後、アクションを実行します
基本的には冗長ではありません。 tmp_name エラー エラー メッセージ (コード名。後で使用できます)。
次に、エラー情報を使用してユーザーにフィードバックする doAction の最後の部分を見てみましょう。説明する必要があるのは、エラーが報告される理由とエラー情報の内容です。1.3 エラー報告について
--エラーの理由:基本的に、ファイルをアップロードするためのサーバーの構成を超えているか、準拠していません。では、サーバー側の構成は何ですか? まず、私たちが使用したものをアップロードすることを検討してください?投稿、アップロード
それでは、php.ini で次のいくつかの項目を探してください:
ファイルアップロード:オン
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 オプションの制限を超えています。
2.1 クライアントの制限
リーリー
アップロードしたいファイルを選択してください:
ここでは、アップロードされるファイルのサイズとタイプを制限するために input 属性が使用されていますが、私の個人的な感覚では、第一に HTML コードが「表示」され、第二に、機能しないことがよくあります (理由は見つかりませんでした)。しかし、最初のもののせいで、私もそれをあきらめて、ただ知りたいと思っています。
2.2 サーバー側の制限事項
リーリー
2.3 梱包
機能
電話する
3. 複数ファイルのアップロードの実装
リーリー
ここでのアイデアは、print_r($_FILES) からそれを見つけることです。これを印刷すると、それをトラバースして使用するだけです。
上記の関数の定義を変更し、いくつかのデフォルト値を与えます
このように、シンプルはシンプルですが、いくつか問題があります。
通常4枚の写真をアップロードする場合は問題ありませんが、途中で機能の終了が有効になるとすぐに停止してしまい、他の写真をアップロードできなくなります。
複数または単一のファイルアップロードのためのカプセル化の実装を目的としています
まずこのような静的ファイルを作成します
リーリー
$_FILES を印刷
可以得到一个三维数组。
复杂是复杂了,但复杂的有规律,各项数值都在一起了,很方便我们取值!!
所以先得到文件信息,变成单文件处理那种信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
然后之前的那种exit错误,就把exit改一下就好了,这里用res
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
|
里面封装了两个小的
1 2 3 4 5 6 7 8 9 10 11 |
|
然后静态中,用multiple属性实现多个文件的输入;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
这样子的几个文件,就实现比较强大的面向过程的上传文件的功能(学的叫一个心酸。。。);
四、面向对象的文件上传
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
|
四、下载
对于浏览器不识别的,可以直接下载,但对于能识别的,需要多一两步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!