国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah pembangunan bahagian belakang tutorial php php文件上傳、下載和刪除示例

php文件上傳、下載和刪除示例

Jan 06, 2017 pm 02:57 PM

php文件上傳、下載和刪除示例大體思路如下,具體內(nèi)容如下

一.文件上傳?

1.把上傳文件的區(qū)域做出來?
div1?

2.把顯示文件的區(qū)域做出來?
div2?

3.提交表單,上傳文件

4.服務(wù)器接收文件數(shù)據(jù)?
用$_FILE[name]接收?

5.處理數(shù)據(jù),看上傳文件是否有錯誤?

錯誤有如下幾種:?
1).上傳的文件超過了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值?
2).上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值?
3).文件只有部分被上傳?
4).沒有文件被上傳?
5).找不到臨時文件夾?
6).文件寫入失敗

6.把上傳的文件從臨時文件夾移到指定文件夾存放?
用這個move_uploaded_file函數(shù)?
其中4 5 6步驟可以做成一個函數(shù)直接調(diào)用.?
注意:文件上傳的頁面如果要嵌入php代碼,文件擴(kuò)展名不能是html,而是.php

二.文件下載?

1.客戶端把文件名發(fā)送給服務(wù)器

2.服務(wù)器接收文件名,然后加上文件的路徑.

3.然后把文件數(shù)據(jù)傳回客戶端?

一般是這四步:

//1.重設(shè)響應(yīng)類型
$info = getimagesize($rootPath.$file);
header("Content-Type:".$info['mime']);
//2.執(zhí)行下載的文件名
header("Content-Disposition:attachment;filename=".$file);
//3.指定文件大小
header("Content-Length:".filesize($rootPath.$file));
//4.響應(yīng)內(nèi)容
readfile($rootPath.$file);

三.文件刪除

1..客戶端把文件名發(fā)送給服務(wù)器

2.服務(wù)器接收文件名,然后加上文件的路徑.

3.用unlink函數(shù)執(zhí)行刪除文件操作

這里有一個圖片上傳下載刪除的小例子.
效果如圖:

php文件上傳、下載和刪除示例

文件上傳下載刪除的界面,代碼如下:
html+php內(nèi)嵌:

<!-- 選擇上傳文件區(qū)域-->
<div id="div1">
  <form action="upLoadFile.php" method="post" enctype="multipart/form-data">
    <div id="div2"><input type="text" id="show" /></div>
    <div id="div3">
      <span class="text">選擇文件</span>
       <input type=&#39;hidden&#39; name=&#39;MAX_FILE_SIZE&#39; value=&#39;100000000&#39;> <!--表單上傳文件的大小限制<100M,也可以設(shè)置其它值-->
      <input type="file" id="upfile" name="file" />
    </div>
    <input type="submit" value="上傳" class="upload" />
  </form>
</div>
<!-- 選擇上傳文件區(qū)域結(jié)束-->
 
<!-- 上傳文件顯示區(qū)域-->
<div id="show-file">
  <ul id="ul-list">
    <!-- 內(nèi)嵌php代碼,為了動態(tài)顯示上傳的文件-->
    <?php
    //1.打開目錄
    $dir = opendir(&#39;upload&#39;);
    //2.遍歷目錄
    $i = 0;
    while($file = readdir($dir))
    {
      if($file == &#39;.&#39;||$file == &#39;..&#39;)
        continue;
      echo "<li><img src=&#39;upload/{$file}&#39; width=&#39;120&#39; height=&#39;100&#39;>
        <div><a href=&#39;deleteFile.php?name={$file}&#39;>刪除</a></span></div>
        <span><a href=&#39;download.php?name={$file}&#39;>下載</a></span></li>";
    }
    //3.關(guān)閉目錄
    closedir($dir);
    ?>
    <!-- 內(nèi)嵌php代碼結(jié)束-->
  </ul>
</div>
<!-- 上傳文件顯示區(qū)域結(jié)束-->

css代碼:

*{margin:0;padding:0;}
    ul,li{list-style: none;}
    /*最外層的div,目的是包住選擇文件按鈕,顯示框和上傳文件按鈕*/
    #div1{width:405px;height:38px;position: relative;margin:40px auto;}
 
    /*第二層div包住顯示框和上傳按鈕,右浮動*/
    #div2{float: right;}
    #div2 input {width:250px;height: 38px;font-size: 22px;}
 
    /*第三層div包住input file*/
    #div3{float:left;width:140px;height:38px;position: relative;
      background: url("upload.jpg") no-repeat 0 0;margin-left: 5px;}
    #div3 input{position: absolute;width:100%;height: 100%;top:0;left: 0;
      z-index: 1;opacity:0;}
 
    /*圖片(選擇文件按鈕)上的文字*/
    .text{display: block;width:140px;height: 38px;position: absolute;top: 0;
      left:0;text-align: center;line-height: 38px;font-size: 28px;
      color: orchid;}
 
    /*上傳按鈕的位置*/
    .upload{width:70px;height: 38px;background: greenyellow;position: absolute;top:0;right: -75px;}
 
    /*鼠標(biāo)停留在選擇文件按鈕上的時候切換圖片*/
    #div3:hover{background: url("upload.jpg") no-repeat 0 -40px;}
 
    /*顯示圖片的div->ul,采用左浮動的方式,一行行的排列圖片*/
    #show-file{width:760px;height:445px;position: relative;margin:10px auto;overflow: scroll;}
    #show-file ul{width:760px;height:445px;position: absolute;top:0;left:0;}
    #show-file ul li{float: left;width:120px;height: 100px;margin: 3px 0 0 3px;position: relative;}
 
    /*刪除按鈕的位置和一些樣式*/
    #show-file ul li div{display: none;opacity: 0;width:40px;height: 20px;position: absolute;left: 5px;bottom: 5px;
      background: gold;color: #d32a0e;z-index: 1;cursor: pointer;text-align: center;line-height: 20px;}
 
    /*下載按鈕的位置和一些樣式*/
    #show-file ul li span{display: none;opacity: 0;width:40px;height: 20px;position: absolute;right: 5px;bottom: 5px;
      background: gold;color: #d32a0e;z-index: 1;cursor: pointer;text-align: center;line-height: 20px;}
 
    /*把a(bǔ)標(biāo)簽的自帶樣式去掉,鼠標(biāo)停留時字體換顏色*/
    #show-file ul li span,div a{text-decoration: none;color:orangered;}
    #show-file ul li span,div a:hover{color: #00fa00;}

js代碼:

<script src="move.js"></script>
 <script>
   window.onload = function ()
   {
     //當(dāng)選擇文件后,會觸發(fā)這個事件
     $(&#39;upfile&#39;).onchange = function ()
     {
       $(&#39;show&#39;).value = this.value;//把獲取到的文件偽路徑傳到編輯框
     };
     //顯示下載按鈕
     var aLi = $(&#39;ul-list&#39;).getElementsByTagName(&#39;li&#39;);   //圖片
     var aSpan = $(&#39;ul-list&#39;).getElementsByTagName(&#39;span&#39;); //下載按鈕
     var aDiv = $(&#39;ul-list&#39;).getElementsByTagName(&#39;div&#39;);  //刪除按鈕
     for(var i = 0;i<aLi.length;i++)
     {
       aLi[i].index = i;
       aLi[i].onmousemove = function ()
       {
         aSpan[this.index].style.display = &#39;block&#39;;
         aDiv[this.index].style.display = &#39;block&#39;;
         startMove(aDiv[this.index],{opacity:100}); //緩沖運(yùn)動
         startMove(aSpan[this.index],{opacity:100}); //緩沖運(yùn)動
       };
       aLi[i].onmouseout = function ()
       {
         aSpan[this.index].style.display = &#39;none&#39;;
         aDiv[this.index].style.display = &#39;none&#39;;
         startMove(aDiv[this.index],{opacity:0});  //緩沖運(yùn)動
         startMove(aSpan[this.index],{opacity:0});  //緩沖運(yùn)動
       }
     }
   };
   function $(id)
   {
     return document.getElementById(id);
   }
 </script>

處理上傳文件的php文件:

include(&#39;myFunctions.php&#39;);
if(uploadFile(&#39;file&#39;,&#39;upload&#39;))
  header("Location:upFileAndDownFile.php");//會馬上跳轉(zhuǎn)回原頁面,根本感覺不到頁面有跳轉(zhuǎn)到這里

處理下載文件的php文件:

include(&#39;myFunctions.php&#39;);
//獲取要下載的文件名(加上路徑)
$file = $_GET[&#39;name&#39;];
$rootPath = &#39;upload/&#39;;
downLoadFile($file,$rootPath);
 
處理刪除文件的php文件:
 
$fileName = &#39;upload/&#39;.$_GET[&#39;name&#39;];
unlink($fileName);
header("Location:upFileAndDownFile.php");
 
其中move.js在前面的JS完美運(yùn)動框架文章有講過。 
myFunctions.php中的函數(shù)如下:
 
/**
 * @function 下載文件
 * @param $file 要下載的文件名
 * @param $rootPath 文件根路徑
 * @return 無
 */
function downLoadFile($file,$rootPath)
{
  //1.重設(shè)響應(yīng)類型
  $info = getimagesize($rootPath.$file);
  header("Content-Type:".$info[&#39;mime&#39;]);
  //2.執(zhí)行下載的文件名
  header("Content-Disposition:attachment;filename=".$file);
  //3.指定文件大小
  header("Content-Length:".filesize($rootPath.$file));
  //4.響應(yīng)內(nèi)容
  readfile($rootPath.$file);
}
 
 
/**
 * @function 上傳文件
 * @param $name 表單名 <input type="file" name="pic" />
 * @param $path 上傳后,文件存放的路徑
 * @return 返回新的文件路徑表示上傳成功 false 失敗
 */
function uploadFile($name,$path)
{
  $file = $_FILES[$name];
  //1.過濾上傳文件的錯誤號
  if($file[&#39;error&#39;] > 0)
  {
    //獲取錯誤信息
    switch($file[&#39;error&#39;])
    {
      case 1:
        $info = &#39;上傳的文件超過了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值。&#39;;
        break;
      case 2:
        $info = &#39;上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值。&#39;;
        break;
      case 3:
        $info = &#39;文件只有部分被上傳。&#39;;
        break;
      case 4:
        $info = &#39;沒有文件被上傳。&#39;;
        break;
      case 6:
        $info = &#39;找不到臨時文件夾&#39;;
        break;
      case 7:
        $info = &#39;文件寫入失敗。 &#39;;
        break;
    }
    die("上傳錯誤,原因: ".$info);
  }
  //2.上傳文件大小的過濾
  if($file[&#39;size&#39;] > 100000000)  //字節(jié)為單位
    die(&#39;上傳文件大小超出限制!&#39;);
  //3.上傳后的文件名定義
  $newfile = null;
  $fileinfo = pathinfo($file[&#39;name&#39;]); //解析上傳文件名
  do{
    $newfile = date(&#39;YmdHis&#39;).".".$fileinfo[&#39;extension&#39;];
  }while(file_exists($path.&#39;/&#39;.$newfile));
  //4.執(zhí)行文件上傳
  //判斷是否是一個上傳文件
  if(is_uploaded_file($file[&#39;tmp_name&#39;]))
  {
    //執(zhí)行文件上傳(移動文件到指定目錄)
    if(move_uploaded_file($file[&#39;tmp_name&#39;],$path.&#39;/&#39;.$newfile))
      return $path.&#39;/&#39;.$newfile;
    else
      return false;
  }
  else
    die(&#39;不是一個上傳文件!&#39;);
}

上傳文件的時候注意要設(shè)置好HTML表單的大小限制和服務(wù)器的大小限制,post的大小限制。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持PHP中文網(wǎng)。

更多php文件上傳、下載和刪除示例相關(guān)文章請關(guān)注PHP中文網(wǎng)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah beberapa amalan terbaik untuk versi API berasaskan PHP? Apakah beberapa amalan terbaik untuk versi API berasaskan PHP? Jun 14, 2025 am 12:27 AM

TOVERSIONAPHP-berasaskan-berasaskan, UseUrl-berasaskan Forversioningforclarityandeaseofrouting, separateVersionedcodetoavoidconflicts, decrecateoldversionswithclearCommunication, andconsidercustomheadershipshenershipshenershipshenershipshenershinlyhenershinlywenershinly

Bagaimana saya melaksanakan pengesahan dan kebenaran dalam php? Bagaimana saya melaksanakan pengesahan dan kebenaran dalam php? Jun 20, 2025 am 01:03 AM

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Apakah perbezaan antara paradigma pengaturcaraan berorientasikan prosedur dan objek dalam PHP? Apakah perbezaan antara paradigma pengaturcaraan berorientasikan prosedur dan objek dalam PHP? Jun 14, 2025 am 12:25 AM

Proseduralandobject-orientedprogramming (OOP) inphpdiffers significelyinstructure, kebolehgunaan semula, dandatahandling.1.ProceduralProgrammingusesFunctionsaganediediedieds, sesuai, pemodelan

Apakah rujukan yang lemah (lemah) dalam PHP, dan kapan mereka berguna? Apakah rujukan yang lemah (lemah) dalam PHP, dan kapan mereka berguna? Jun 14, 2025 am 12:25 AM

PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe

Bagaimana anda boleh mengendalikan fail memuat naik dengan selamat di php? Bagaimana anda boleh mengendalikan fail memuat naik dengan selamat di php? Jun 19, 2025 am 01:05 AM

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Bagaimanakah anda boleh berinteraksi dengan pangkalan data NoSQL (mis., MongoDB, Redis) dari PHP? Bagaimanakah anda boleh berinteraksi dengan pangkalan data NoSQL (mis., MongoDB, Redis) dari PHP? Jun 19, 2025 am 01:07 AM

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Apakah perbezaan antara == (perbandingan longgar) dan === (perbandingan ketat) dalam php? Apakah perbezaan antara == (perbandingan longgar) dan === (perbandingan ketat) dalam php? Jun 19, 2025 am 01:07 AM

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Bagaimanakah saya melakukan operasi aritmetik dalam php (, -, *, /, %)? Bagaimanakah saya melakukan operasi aritmetik dalam php (, -, *, /, %)? Jun 19, 2025 pm 05:13 PM

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.

See all articles