Mafunzo ya File Upload ya PHP

通过 PHP,可以把文件上传到服务器。

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:




请留意如下有关此表单的信息:

标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

Mwili wa <input> kwa sababu ya type="file" inasababisha kwamba kufikia kama mifaa. Kwa mfano, kama kufikia kwa kusikia katika kifungu, hakiwezi kuona mabaki ya kufungua kwenye ingia.

Mawazo:Kuweka haki kwenda mifaa ni riziko kubwa. Tafadhali kumchukua tu wakati ambao wameaminika kumuupisha mifaa.

Kumwambaa mshakani wa kumuupisha mifaa

Faili "upload_file.php" inahesha kipakana kwa kumuupisha mifaa:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Kosa: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Uwalishaji: " . $_FILES["file"]["name"] . "<br />";
  echo "Aina: " . $_FILES["file"]["type"] . "<br />";
  echo "Uenezi: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Inahifadhiwa kwenye: " . $_FILES["file"]["tmp_name"];
  }
?>

Kwa kutumia orodha ya jumla ya PHP ya $_FILES, unaweza kutupwa file kwenye kompyuta ya mwanamwengu hadi serveri ya jua.

Para ya kwanza ni jina la input ya fomu, para ya pili inaweza kuwa "name", "type", "size", "tmp_name" au "error". Kama hivi:

  • $_FILES["file"]["name"] - Jina la faili inayotupwa
  • $_FILES["file"]["type"] - Aina ya faili inayotupwa
  • $_FILES["file"]["size"] - Umato wa faili inayotupwa kwa byte
  • $_FILES["file"]["tmp_name"] - Jina la orodha ya muda wa faili inayotupwa kwenye serveri
  • $_FILES["file"]["error"] - Kosa cha kumtaarifu file inayotupwa

Hii ni tabia ya kumuupa file inayotupwa inayotarajiwa sana. Kwa sababu ya uaminifu, inahitajika kuzingatia uchaguzi kwa wanamwengu wanaotumia kumtaarifu kwa kumwengaa file.

Uchaguzi wa kumuupa

Kwenye mkskili hii, tumeongeza uchaguzi wa kumtaarifu kwa file inayotupwa. Wanamwengu waenye haki ya kutupwa wengi wengi hawa wewe na uchaguzi.

<?php
if ((($_FILES["file"]["type"] == "image/gif"))
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Kosa: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Uwalishaji: " . $_FILES["file"]["name"] . "<br />";
    echo "Aina: " . $_FILES["file"]["type"] . "<br />";
    echo "Uenezi: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Inahifadhiwa kwenye: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Faili bila maadili";
  }
?>

Mawazo:Kwa IE, aina ya faili jpg inahitajika kuwa pjpeg, kwa Firefox inahitajika kuwa jpeg.

Kuambua faili inayotupwa

Mfano wa juu unaundwa kwa kumekadiri faili inayotupwa kama orodha wa muda wa PHP kwenye serveri.

Hali yaliopakia kwa wakati wa muda mwingine itakatakia kama ya kumaliza. Kuuambua faili inayotupwa, inahitajika kuyekuwa kwenye eneo lake kina:

<?php
if ((($_FILES["file"]["type"] == "image/gif"))
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Inasho ya Kwa Msaada: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Uwalishaji: " . $_FILES["file"]["name"] . "<br />";
    echo "Aina: " . $_FILES["file"]["type"] . "<br />";
    echo "Uenezi: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Faili wa muda: " . $_FILES["file"]["tmp_name"] . "<br />";
    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " hayajatoa. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Inahifadhiwa katika: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Faili bila maadili";
  }
?>

Skripti hii inakisiaa ukweli wa faili hii inayotumika, kama haitakuwa, inakopika faili kwenye dosari iliyotumika.

Mawazo:Mfano huu anasanya faili kwa kina kwa dosari ya kina inayoitwa "upload".