ホームページ バックエンド開発 PHPチュートリアル phpの基礎知識(5) - ファイルダウンロード

phpの基礎知識(5) - ファイルダウンロード

Jun 13, 2016 pm 01:17 PM
file gt lt nbsp php

phpの基礎知識(5)-ファイルアップロード
PHP の基本 - ファイルのアップロード

サンプル コード ダウンロード ページ http://xieye.iteye.com/blog/1336095

では、ユーザーがテキスト ファイルとバイナリ ファイルをアップロードできます。 PHP の認証機能とファイル操作機能を使用すると、誰にアップロードを許可するか、アップロード後にファイルをどうするかを完全に制御できます。

関連設定: php.ini の file_uploads、upload_max_filesize、upload_tmp_dirpost_max_size、max_input_time 設定オプションを参照してください。
デフォルトでは、php 設定でアップロードが許可されており、ファイル サイズは 2M を超えることはできません。

PHP アップロードでは特別なフォームを構築する必要があります。実際、フォームには追加の属性 enctype="multipart/form-data" があり、form 要素に追加の file 要素があります。
サーバー側で move_uploaded_file 関数を使用する必要があり、$_FILE スーパー グローバル変数が使用可能です。
以下は PHP マニュアルからのコピーです
<<<
$_FILES['userfile']['name']
クライアント マシン ファイルの元の名前。

$_FILES['userfile']['type']
ファイルの MIME タイプ (ブラウザーがこの情報を提供する場合)。例は「画像/gif」です。ただし、この MIME タイプは PHP 側ではチェックされないため、鵜呑みにしないでください。

$_FILES['userfile']['size']
アップロードされたファイルのサイズ (バイト単位)。

$_FILES['userfile']['tmp_name']
ファイルのアップロード後にサーバーに保存される一時ファイル名。

$_FILES['userfile']['error']
ファイルのアップロードに関連するエラー コード。このプロジェクトは PHP バージョン 4.2.0 で追加されました。

>>>

提案 1: 実際のアプリケーションでは、ユーザーがアップロードしたファイルをプログラムと同じディレクトリに配置すべきではありません (これは悪い習慣です)。このチュートリアルでは、シンプルにするためです。
提案 2: システムのセキュリティのため、元のファイル名を保存する必要がある場合は、アップロードしたファイルの名前を常に変更してデータベースに保存する必要があります。
提案 3: ユーザーが頻繁にファイルをアップロードする場合は、特定のディレクトリの下にサブディレクトリを作成する必要があります。たとえば、uploadfile ディレクトリには、日ごとに 20120102、20120103 などのディレクトリがあります。
ユーザーがアップロードしたファイルは、それぞれのディレクトリに保存されます。ディレクトリ内のそれぞれのディレクトリ。
提案 4: ファイル数が少ない場合を除き、アップロードされたファイルを内容に応じて独自のフォルダーに保存することはお勧めできません。同じディレクトリ内にファイルが多すぎると (たとえば、10,000 を超える)、Linux または Windows に関係なく、システムの取得速度が低下するためです

提案 5: サブディレクトリを作成する場合、通常はパスをデータベースに保存する必要があります。



例 1:
http://localhost/command/peixun/upload/1.php
通常のファイルアップロードコード。アップロード後、フォルダーに移動できます。実際にアップロードされているかどうかを確認します。

例 2
参考ソース; http://www.phpletter.com/Our-Projects/AjaxFileUpload/
jquery ライブラリと jquery プラグインの使用 ajaxfileupload

テストURL
http://localhost/command/peixun/upload/2.php
js を使用してファイルをアップロードします。クライアント コードは変更されましたが、サーバー コードはまったく変更されていません。

コードはダウンロードできます

1.php

&lt;?php
//第一个例子
require_once('../Public/CommandLine.php');

$isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;
if ($isget) {
    $html = &lt;&lt;&lt;longs
&lt;html&gt;    
&lt;body&gt;
  &lt;form method="post"  enctype="multipart/form-data" &gt;
    请选择文件:&lt;input type="file" name="file1" &gt;
    &lt;br /&gt;
    &lt;input type="submit" value="提交" /&gt;
  &lt;/form&gt;
&lt;/body&gt;  
&lt;/html&gt;  
longs;
    echo $html;
    
} else {
    $file = $_FILES['file1'];
    $oldname = $file['tmp_name'];
    $result = move_uploaded_file($oldname, $file['name']);//可以随意替换名称
    echo $file['name'] . '上传成功,请到当前文件夹下去检查';
    
}
ログイン後にコピー



2.php
&lt;?php
//第一个例子
require_once('../Public/CommandLine.php');

$isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;
if ($isget) {
    $html = &lt;&lt;&lt;longs
&lt;html&gt;    
&lt;link href="ajaxfileupload.css" type="text/css" rel="stylesheet"&gt;
    &lt;script type="text/javascript" src="jquery-1.6.2.min.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" src="ajaxfileupload.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript"&gt;
    function ajaxFileUpload()
    {
        $("#loading")
        .ajaxStart(function(){
            $(this).show();
        })
        .ajaxComplete(function(){
            $(this).hide();
        });

        $.ajaxFileUpload
        (
            {
                url:'2.php',
                secureuri:false,
                fileElementId:'fileToUpload',
                dataType: 'json',
                success: function (data, status)
                {
                    alert('上传成功')
                },
                error: function (data, status, e)
                {
                    alert(e);
                }
            }
        )
        
        return false;

    }
    &lt;/script&gt;   
    &lt;/head&gt;

    &lt;body&gt;

  &lt;div id="content"&gt;
    &lt;h1&gt;Ajax文件上传示例&lt;/h1&gt;
        
    &lt;img id="loading" src="loading.gif" style="display:none;"&gt;
    &lt;form name="form" action="" method="POST" enctype="multipart/form-data"&gt;
      &lt;input id="fileToUpload" type="file" size="45" 
             name="fileToUpload" class="input"&gt;
      &lt;br /&gt;
      &lt;button class="button" id="buttonUpload" 
                         onclick="return ajaxFileUpload();"&gt;Upload&lt;/button&gt;
    &lt;/form&gt;     
  &lt;/div&gt;
    

    &lt;/body&gt;
&lt;/html&gt;  
longs;
    echo $html;
    
} else {
    //注意:这里是不显示的。
    $file = $_FILES['fileToUpload'];
    $oldname = $file['tmp_name'];
    $result = move_uploaded_file($oldname, $file['name']);//可以随意替换名称
    echo '{}';
    
}
ログイン後にコピー


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles