php を使用して一般的なファイルアップロード機能を完了する

高洛峰
リリース: 2023-03-04 19:40:01
オリジナル
1002 人が閲覧しました

ファイルのアップロードは現在非常に一般的であり、ファイルのアップロード、アバターのアップロードなどを行うことができます。ブラウザごとに異なる「ファイルのアップロード」効果があります。

まず Firefox の効果を見てみましょう。 IE ブラウザは次のとおりです:

php を使用して一般的なファイルアップロード機能を完了する

他にも多くのブラウザがあるため、1 つずつ効果を確認するつもりはありません。では、このアップロードはどのように行われるのでしょうか。

1. ファイルアップロード機能php を使用して一般的なファイルアップロード機能を完了する

(1) まず、このアップロードページを用意します

まず、フォーム要素を書きます(「アップロード処理について、いくつかのルールを記述することができます」という処理ページを含む)。これは送信方法でもあり、次に重要な属性があります。これはファイルのアップロードであるため、この属性が必要です: enctype="multipart/form-data") 次に、フォームが決定された後、ボタンがあります。内部のコンテンツはファイルのアップロードです。通常のボタンのタイプは「ファイル」です。次に、送信が必要な「アップロード」ボタンがあるため、ボタンのタイプは「送信」である必要があります:

<form action="wenjiansccl.php" method="post" enctype="multipart/form-data">  <!--处理页面起个名字,做文件上传是这个属性:enctype="multipart/form-data"-->
  <input type="file" name="file"/> //浏览文件的按钮
  <input type="submit" value="上传" /> //提交的上传按钮
</form>
ログイン後にコピー

最初に効果を見てみましょう:

(2) 2 番目は重要なファイルのアップロード処理ページです

最初に値出力をアップロードして、ファイルがアップロードされた後に何が表示されるかを確認できます。ファイル値の転送メソッドは post または get を使用できません。値の転送メソッド $_FILES[""] を使用します。 php を使用して一般的なファイルアップロード機能を完了する

var_dump($_FILES["file"]);  //输出传过来的值
ログイン後にコピー

出力結果は図に示すとおりです。

注: この図の情報は以下で使用する場合は、最初に名前を付けます (配列)。したがって、以下で使用する場合はわかりにくくなります

名前、タイプ、保存場所、エラーなど、いくつかの 2 次元配列を確認するのは難しくありません。ファイルが実際に一時的に保存されるように、ファイルのメッセージとファイル サイズを確認します。php を使用して一般的なファイルアップロード機能を完了する

ファイルをアップロードする際には、次の 4 つの点に注意してください。アップロードファイルのサイズ

3. ファイル名の重複を防ぐ

3.1 保存ファイル名を変更する

3.11 ユーザー名+タイムスタンプ+乱数+ファイル名

3.12 シリアル番号

3.2 フォルダーを使用する

3.21public/lch /2017-2-12/1.jpg

4. ファイルを保存します

これで4つの注意事項(ステップにも相当します)ができたら、あとは処理ページをステップバイステップで書き始めるだけです

(1) 出力するときは、まず、送信エラーかどうかを判断します

if($_FILES["file"]["error"]) //将文件传值到处理页面,找到出错的索引,也就是(array)图中的错误项error
{
  echo $_FILES["file"]["error"];
}
ログイン後にコピー

(2) 上記は、エラーがなければエラーメッセージを出力します。次のコンテンツに進みます: 注意事項に従って書き込みを開始します

1 つ目は: アップロード時にファイルのタイプとサイズを制御します (また、(配列) 画像からタイプのタイプとサイズを見つけて、目的のタイプを割り当てます)値) jpeg と png に限定しましたが、複数の種類を「or」で記述することもできます。ここでもif文を使って判断します(ファイル形式がjpegまたはpngでファイルサイズが1024000未満であればアップロード可能、そうでなければアップロード失敗)

if($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png" && $_FILES["file"]["size"]<1024000)
{<br>  //注意事项3和4的内容<br>}
else
{
  echo "文件类型不正确!";
}
ログイン後にコピー

(3)コード内のコメント(注意) 3) と 4) の内容を重複して保存しないようにします

まず、ファイルの保存場所 (保存したい場所) を見つけて、ファイル名を変更する方法 (タイムスタンプ方法を使用) に結合します。 )

$filesname = "./files/".date("YmdHis").$_FILES["file"]["name"]; //$_FILES["file"]["name"]这也同样的也是(array)图的名称name
ログイン後にコピー

2番目: ファイルが存在するかどうかを確認します(存在する場合はメッセージが表示され、存在しない場合はフォルダーに保存します)

if(file_exists($filesname)) //file_exists()方法:判断文件是否存在,里面的值就是定义的保存位置
{
  echo "文件已经存在"; //存在给出提示
}
else
{
  //不存在就,保存文件(move_uploaded_file()保存)
  move_uploaded_file($_FILES["file"]["tmp_name"],$filesname);  //里面的值要有当前的保存位置,将要保存到哪的位置
}
<span style="font-family: 宋体; font-size: 15px"><span style="font-size: 18px">注意:</span><br>1.可能上传的时候是UTF-8的编码格式,Windows是用的国标的编码格式,上传上汉子可能成为乱码了,可以在文件保存位置下面加上“转换编码格式”<br>使用的是:</span><span style="font-size: 15px">iconv()方法:</span><span style="font-size: 15px">里面有3个值,一是现在使用的编码格式,二是想要转换的编码格式,三是想要转换的字符串</span>
$filename = iconv("UTF-8","gb2312",$filesname); //这个iconv()里面有3个值,一是现在使用的编码格式,二是想要转换的编码格式,三是想要转化的字符串
<span style="font-family: 宋体; font-size: 15px">2.如果上面的文件的上传格式是篡改的格式,也用move_uploaded_file()方法</span>
ログイン後にコピー

これでファイルのアップロードは完了です。それ。

2番目に、ファイルのプレビューをアップロードします

写真をアップロードするときは、まずアップロードする前に効果を確認します

(1) まず、ファイルを選択するためのファイルボタンがあります

rreeの(2) ) この div の表示に使用される div

rrrrrrrrrrrrue

は、ポイント スタイル

<input id="uploadImage" type="file" name="photoimage" class="fimg1" onchange="PreviewImage();" /> //对这个按钮加一个事件
ログイン後にコピー

を追加して効果を確認します:

次に、インシデントを書き込みます

rreee

これはただの簡単なアップロードのプレビュー。ファイルにアップロードするための処理ページはまだ書かれていません。別の日にアップロード画像コードを追加しますphp を使用して一般的なファイルアップロード機能を完了する

選択した画像の効果を確認してください。

php を使用して一般的なファイルアップロード機能を完了する

このようにして、ファイルのアップロードと画像のプレビューが完了しました。この 2 つを組み合わせると、画像のアップロードが完了します~~~

関数関連の記事については、PHP を使用してください。 、PHP 中国語 Web サイトに注意してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート