Heim >Backend-Entwicklung >PHP-Tutorial >So implementieren Sie das Hochladen, Herunterladen und Löschen von Dateien in PHP

So implementieren Sie das Hochladen, Herunterladen und Löschen von Dateien in PHP

墨辰丷
墨辰丷Original
2018-05-31 15:45:573056Durchsuche

Dieser Artikel stellt hauptsächlich die Beispiele zum Hochladen, Herunterladen und Löschen von PHP-Dateien im Detail vor. Interessierte Freunde können sich auf

Beispiele zum Hochladen, Herunterladen und Löschen von PHP-Dateien beziehen ist wie folgt, und der spezifische Inhalt ist wie folgt

1. Datei-Upload

1. Erstellen Sie den Bereich zum Hochladen von Dateien
p1

2. Erstellen Sie den Bereich zum Anzeigen der Datei

3 Senden Sie das Formular und laden Sie die Datei hoch Server empfängt die Dateidaten

Verwenden Sie $_FILE[name], um


5 zu empfangen. Verarbeiten Sie die Daten und prüfen Sie, ob Fehler in der hochgeladenen Datei vorhanden sind

Die Fehler lauten wie folgt:
1) Die Datei überschreitet den durch die Option „upload_max_filesize“ in php.ini begrenzten Wert.

2) Die Größe der hochgeladenen Datei überschreitet den durch die Option „MAX_FILE_SIZE“ im HTML angegebenen Wert Formular

3). Nur ein Teil der Datei wurde hochgeladen
5). . Hochgeladene Dateien vom temporären Ordner in den angegebenen Ordner zur Speicherung verschieben
Verwenden Sie diese Funktion „move_uploaded_file“
Schritte 4, 5 und 6 können in eine Funktion umgewandelt und direkt aufgerufen werden
Hinweis: Wenn die Datei-Upload-Seite benötigt wird Um PHP-Code einzubetten, darf die Dateierweiterung nicht html, sondern .php sein.

2. Datei-Download



1 Server

2. Der Server empfängt den Dateinamen und fügt dann den Dateinamen Pfad hinzu.

3. Übertragen Sie dann die Dateidaten zurück an den Client

Diese vier Schritte sind:

   //1.重设响应类型
  $info = getimagesize($rootPath.$file);
  header("Content-Type:".$info['mime']);
  //2.执行下载的文件名
  header("Content-Disposition:attachment;filename=".$file);
  //3.指定文件大小
  header("Content-Length:".filesize($rootPath.$file));
  //4.响应内容
  readfile($rootPath.$file);


3. Dateilöschung

1 Name an den Server

2. Der Server empfängt den Dateinamen und fügt dann den Dateinamen Pfad hinzu.

3 Verwenden Sie die Funktion zum Aufheben der Verknüpfung, um Dateien zu löschen
Hier ist ein kleines Beispiel für das Hochladen, Herunterladen und Löschen von Bildern:

Die Schnittstelle zum Hochladen, Herunterladen und Löschen von Dateien lautet wie folgt:

html+php eingebettet:


<!-- 选择上传文件区域-->
<p id="p1">
  <form action="upLoadFile.php" method="post" enctype="multipart/form-data">
    <p id="p2"><input type="text" id="show" /></p>
    <p id="p3">
      <span class="text">选择文件</span>
       <input type=&#39;hidden&#39; name=&#39;MAX_FILE_SIZE&#39; value=&#39;100000000&#39;> <!--表单上传文件的大小限制<100M,也可以设置其它值-->
      <input type="file" id="upfile" name="file" />
    </p>
    <input type="submit" value="上传" class="upload" />
  </form>
</p>
<!-- 选择上传文件区域结束-->

<!-- 上传文件显示区域-->
<p id="show-file">
  <ul id="ul-list">
    <!-- 内嵌php代码,为了动态显示上传的文件-->
    <?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;>
        <p><a href=&#39;deleteFile.php?name={$file}&#39;>删除</a></span></p>
        <span><a href=&#39;download.php?name={$file}&#39;>下载</a></span></li>";
    }
    //3.关闭目录
    closedir($dir);
    ?>
    <!-- 内嵌php代码结束-->
  </ul>
</p>
<!-- 上传文件显示区域结束-->


CSS-Code:


*{margin:0;padding:0;}
    ul,li{list-style: none;}
    /*最外层的p,目的是包住选择文件按钮,显示框和上传文件按钮*/
    #p1{width:405px;height:38px;position: relative;margin:40px auto;}

    /*第二层p包住显示框和上传按钮,右浮动*/
    #p2{float: right;}
    #p2 input {width:250px;height: 38px;font-size: 22px;}

    /*第三层p包住input file*/
    #p3{float:left;width:140px;height:38px;position: relative;
      background: url("upload.jpg") no-repeat 0 0;margin-left: 5px;}
    #p3 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;}

    /*鼠标停留在选择文件按钮上的时候切换图片*/
    #p3:hover{background: url("upload.jpg") no-repeat 0 -40px;}

    /*显示图片的p->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 p{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标签的自带样式去掉,鼠标停留时字体换颜色*/
    #show-file ul li span,p a{text-decoration: none;color:orangered;}
    #show-file ul li span,p a:hover{color: #00fa00;}

js-Code:


 <script src="move.js"></script>
  <script>
    window.onload = function ()
    {
      //当选择文件后,会触发这个事件
      $(&#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 ap = $(&#39;ul-list&#39;).getElementsByTagName(&#39;p&#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;;
          ap[this.index].style.display = &#39;block&#39;;
          startMove(ap[this.index],{opacity:100}); //缓冲运动
          startMove(aSpan[this.index],{opacity:100}); //缓冲运动
        };
        aLi[i].onmouseout = function ()
        {
          aSpan[this.index].style.display = &#39;none&#39;;
          ap[this.index].style.display = &#39;none&#39;;
          startMove(ap[this.index],{opacity:0});  //缓冲运动
          startMove(aSpan[this.index],{opacity:0});  //缓冲运动
        }
      }
    };
    function $(id)
    {
      return document.getElementById(id);
    }
  </script>

PHP-Datei zur Verarbeitung hochgeladener Dateien:

include(&#39;myFunctions.php&#39;);
if(uploadFile(&#39;file&#39;,&#39;upload&#39;))
  header("Location:upFileAndDownFile.php");//会马上跳转回原页面,根本感觉不到页面有跳转到这里

PHP-Datei zur Verarbeitung heruntergeladener Dateien:

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完美运动框架文章有讲过。 
myFunctions.php中的函数如下:

/**
 * @function 下载文件
 * @param $file 要下载的文件名
 * @param $rootPath 文件根路径
 * @return 无
 */
function downLoadFile($file,$rootPath)
{
  //1.重设响应类型
  $info = getimagesize($rootPath.$file);
  header("Content-Type:".$info[&#39;mime&#39;]);
  //2.执行下载的文件名
  header("Content-Disposition:attachment;filename=".$file);
  //3.指定文件大小
  header("Content-Length:".filesize($rootPath.$file));
  //4.响应内容
  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 选项限制的值。&#39;;
        break;
      case 2:
        $info = &#39;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。&#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)  //字节为单位
    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.执行文件上传
  //判断是否是一个上传文件
  if(is_uploaded_file($file[&#39;tmp_name&#39;]))
  {
    //执行文件上传(移动文件到指定目录)
    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;);
}

Achten Sie beim Hochladen von Dateien auf die Einstellung Größenbeschränkung des HTML-Formulars, die Größenbeschränkung des Servers und die Größenbeschränkung des Beitrags.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP implementiert die Methode zum Lokalisieren der Fehlerursache durch Strace

PHP verwendet file_get_contents, um Senden Sie HTTP-Anfragen mit einer einfachen Funktion

Lösung für das PHP+MySQL-Problem bei der Verarbeitung hoher Parallelitätssperrtransaktionen


Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Hochladen, Herunterladen und Löschen von Dateien in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn