Heim  >  Artikel  >  Backend-Entwicklung  >  PHP --- Datei-Upload und -Download

PHP --- Datei-Upload und -Download

WBOY
WBOYOriginal
2016-08-08 09:27:47800Durchsuche

Nachdruck von http://www.cnblogs.com/lazycat-cz/p/4113037.html

Sicherheitsleistung --- unzureichendes Niveau ╮(╯_╰)╭

Datei-Upload---> Dient zum Hochladen lokaler Dateien auf den Server. (HTTP-Protokoll muss erlernt werden)Zuerst müssen Sie die hochgeladene Datei lokal auswählen. Nach dem Hochladen auf den Server muss der Server einige Verarbeitungsschritte durchführen Nehmen Sie einige Einstellungen vor

(Client) Die einfachste Methode zum Hochladen einer Datei besteht darin, die Datei über das Formular zu posten und zuerst den Code einzufügen.

<html>
<body>

<form action="upload_file.php" method="post"  enctype="multipart/form-data">
<label <span>for</span>="file">选择文件:</label>
<input type="file" name="uploadFile" /> <br /><br><input type="submit" name="submit" value="上传" /> </form> </body> </html>
Das enctype-Attribut des

-Tags gibt an, welcher Inhaltstyp beim Absenden des Formulars verwendet werden soll. Verwenden Sie „multipart/form-data“, wenn Ihr Formular Binärdaten erfordert, z. B. Dateiinhalte.

Das Attribut „type="file" des Tags

gibt an, dass die Eingabe als Datei verarbeitet werden soll. Wenn Sie beispielsweise eine Vorschau in einem Browser anzeigen, wird neben dem Eingabefeld eine Schaltfläche zum Durchsuchen angezeigt.

(Server) Die auf den Server hochgeladene Datei muss noch verarbeitet werden. In PHP speichert $_POST die per Post übergebenen Daten und die relevanten Informationen der hochgeladenen Datei werden in $_FILES,

gespeichert

<?<span>php
    </span><span>echo</span> '_FILES: <pre class="brush:php;toolbar:false">'<span>;
</span><span>//</span><span><pre class="brush:php;toolbar:false"> 标签的一个常见应用就是用来表示计算机的源代码。</span>
    <span>print_r</span>(<span>$_FILES</span><span>);
      
    </span><span>echo</span> '_POST: <pre class="brush:php;toolbar:false">'<span>;
    </span><span>print_r</span>(<span>$_POST</span><span>);
</span>?>

_FILES[] ist ein zweidimensionales Array. Der Schlüsselname array[uploadFile] hängt vom Namenswert im Tag type="file" ab. Es markiert die hochgeladenen Dateiinformationen dieses Steuerelements, sodass wir mehrere Upload-Steuerelemente einfügen und unterschiedliche Namen festlegen können. Wir können sie alle in ein Array einfügen, z. B. . Fehler bedeutet Fehler, und es gibt mehrere Situationen: 0: Kein Fehler, der Upload ist erfolgreich; 1: Die Datei überschreitet die durch upload_max_filesize in der PHP-Konfigurationsanweisung angegebene Größe. 2: Die Datei überschreitet die durch MAX_FILE_SIZE im HTML-Formular angegebene Größe , 3: Die Datei ist nur teilweise hochgeladen. 4: Keine Dateien hochgeladen. (Das Größenproblem ist immer noch nicht klar ╮(╯_╰)╭, daher werde ich es vorerst nicht erklären)

<?<span>php
    </span><span>$typeWhiteList</span> = <span>array</span>('txt', 'doc', 'php', 'zip', 'exe');   <span>//</span><span> 类型白名单,过滤不允许上传的文件类型</span>
    <span>$max_size</span> = 1000000;  <span>//</span><span> 大小限制 为1M</span>
    <span>$upload_path</span> = 'D:/WAMP';    <span>//</span><span> 指定移至的目录
     
    // 1、判断是否成功上传到服务器 </span>
    <span>$error</span> = <span>$_FILES</span>['uploadFile']['error'<span>];
    </span><span>if</span>(<span>$error</span> > 0<span>){
         </span><span>switch</span>(<span>$error</span><span>){
             </span><span>case</span> 1: <span>exit</span>('超过php配置的最大文件上传限制'<span>);
             </span><span>case</span> 2: <span>exit</span>('超过HTML表单的最大文件上传限制'<span>);
             </span><span>case</span> 3: <span>exit</span>('文件只有部分被上传'<span>);
             </span><span>case</span> 4: <span>exit</span>('没有上传任何文件'<span>);
             </span><span>default</span>: <span>exit</span>('未知类型错误'<span>);
         }
    }
     
    </span><span>//</span><span> 2、判断是否为允许上传的类型</span>
    <span>$extension</span> = <span>pathinfo</span>(<span>$_FILES</span>['uploadFile']['name'], PATHINFO_EXTENSION); <span>//</span><span> 获取扩展名</span>
    <span>if</span>(!<span>in_array</span>(<span>$extension</span>, <span>$typeWhiteList</span><span>)){
        </span><span>if</span>(<span>$extension</span> == ''<span>)
           </span><span>exit</span>('不允许上传空类型文件'<span>);
         </span><span>else</span> 
           <span>exit</span>('不允许上传'.<span>$extension</span>.'类型文件'<span>);
    } 
     
    </span><span>//</span><span> 3、判断是否为允许大小</span>
    <span>if</span>(<span>$_FILES</span>['uploadFile']['size'] > <span>$max_size</span><span>){
        </span><span>exit</span>('超过了允许上传到的'.<span>$max_size</span>.'字节'<span>);
    }
     
    </span><span>//</span><span> 4、已到指定位置</span>
    <span>$filename</span> = <span>date</span>('Ymd').<span>rand</span>(1000, 9999);   <span>//</span><span> 生成一个新文件名,防止覆盖</span>
    <span>if</span>(<span>is_uploaded_file</span>(<span>$_FILES</span>['uploadFile']['tmp_name'])){   <span>//</span><span> 判断是否通过HTTP POST上传</span>
        <span>if</span>(!<span>move_uploaded_file</span>(<span>$_FILES</span>['uploadFile']['tmp_name'], <span>$upload_path</span>.<span>$filename</span>.'.'.<span>$extension</span><span>)){
            </span><span>exit</span>('无法移动到指定位置'<span>);
         }
         </span><span>else</span><span>{
            </span><span>echo</span> '文件上传成功<br/>'<span>;
            </span><span>echo</span> '文件名: '.<span>$upload_path</span>.<span>$filename</span>.'.'.<span>$extension</span>.'<br>'<span>;
         }
    }
     </span><span>else</span><span>{
         </span><span>exit</span>('文件未通过合法途径上传'<span>);
     }</span>

Hochladen abgeschlossen............

Datei-Download---> Um eine einzelne Datei herunterzuladen, müssen Sie nur einen HTML-Link und ein href-Attribut verwenden, um den Speicherort der Ressource anzugeben. Diese Methode kann jedoch nur MIME-Typen verarbeiten, die vom Browser standardmäßig nicht erkannt werden (MIME-Details sind an Wikipedia http://zh.wikipedia.org/wiki/Multipurpose Internet Mail Extensions angehängt)

<html>
    <head>
             <title>donwload <span>file</span></title>
             <meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />
    </head>
    <body>
             <a href="resource/header.txt"><span>header</span>.txt</a><br/>
             <a href="resource/php.zip">php.zip</a><br/>
             <a href="resource/pic.ico">pic.ico</a>
           
    </body>
</html>

Klicken Sie für diese Dateitypen, die vom Browser nicht erkannt werden, auf den Link und es wird direkt ein Feld zum Herunterladen angezeigt. Einige Browser laden sie sogar direkt herunter von Dateien, die von Browsern standardmäßig erkannt werden. Sobald Sie darauf klicken, werden sie direkt auf der Seite angezeigt, z. B. header.txt und pic.ico oben. Wie lade ich sie herunter, ohne sie auf der Seite anzuzeigen? Verwenden Sie die Header-Funktion.

Die Header-Funktion benachrichtigt Sie, indem sie Header-Informationen sendet. Bitte behandeln Sie die Datei als Anhang, damit sie beim Klicken heruntergeladen wird. (Ich verstehe es noch nicht ganz, ich füge mehr hinzu, sobald ich es vollständig verstanden habe ╮(╯_╰)╭)

Oh~                                                                                                                                                                                                   .

Erklären Sie noch einmal die Nachdruckadresse http://www.cnblogs.com/lazycat-cz/p/4113037.html

Das Obige stellt das Hochladen und Herunterladen von PHP-Dateien vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

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