<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 文件上傳類 CodeIgniter 的文件上傳類用于上傳文件,你可以設置參數限制上傳文件的類型和大小。 [TOC=2,3] ## 處理流程 上傳一個文件通常涉及以下幾步: * 顯示一個上傳表單,用戶選擇文件并上傳。 * 當提交表單時,文件將被上傳到你指定的目錄。 * 同時,根據你設置的參數對文件進行校驗是否允許上傳。 * 上傳成功后,向用戶顯示成功消息。 下面是個簡單的教程來示范該過程,然后會列出一些其他的參考信息。 ### 創建上傳表單 使用文本編輯器新建一個文件 upload_form.php ,放入如下代碼,并保存到?**application/views/**?目錄下: ~~~ <html> <head> <title>Upload Form</title> </head> <body> <?php echo $error;?> <?php echo form_open_multipart('upload/do_upload');?> <input type="file" name="userfile" size="20" /> <br /><br /> <input type="submit" value="upload" /> </form> </body> </html> ~~~ 你會注意到我們使用了表單輔助函數來創建 form 的起始標簽,文件上傳需要使用 multipart 表單, 輔助函數可以幫你正確生成它。還要注意的是,代碼里有一個 $error 變量,當發生錯誤時, 可以用它來顯示錯誤信息。 ### 上傳成功頁面 使用文本編輯器新建一個文件 upload_success.php ,放入如下代碼,并保存到?**application/views/**?目錄下: ~~~ <html> <head> <title>Upload Form</title> </head> <body> <h3>Your file was successfully uploaded!</h3> <ul> <?php foreach ($upload_data as $item => $value):?> <li><?php echo $item;?>: <?php echo $value;?></li> <?php endforeach; ?> </ul> <p><?php echo anchor('upload', 'Upload Another File!'); ?></p> </body> </html> ~~~ ### 控制器 使用文本編輯器新建一個控制器 Upload.php ,放入如下代碼,并保存到?**application/controllers/**?目錄下: ~~~ <?php class Upload extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper(array('form', 'url')); } public function index() { $this->load->view('upload_form', array('error' => ' ' )); } public function do_upload() { $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = 100; $config['max_width'] = 1024; $config['max_height'] = 768; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('userfile')) { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('upload_success', $data); } } } ?> ~~~ ### 上傳文件目錄 你需要一個目錄來保存上傳的圖片,在 CodeIgniter 的安裝根目錄下創建一個 uploads 目錄, 并將它的權限設置為 777 。 ### 嘗試一下! 使用類似于下面的 URL 來方法你的站點: ~~~ example.com/index.php/upload/ ~~~ 你應該能看到一個上傳文件的表單,嘗試著上傳一個圖片文件(jpg、gif 或 png 都可以), 如果你的控制器中路徑設置正確,你就可以成功上傳文件了。 ## 參考指南 ### 初始化文件上傳類 正如 CodeIgniter 中的其他類一樣,在你的控制器中使用?$this->load->library()?方法來初始化文件上傳類: ~~~ $this->load->library('upload'); ~~~ 初始化之后,文件上傳類的對象就可以這樣訪問: ~~~ $this->upload ~~~ ### 參數設置 和其他的類庫一樣,你可以通過你配置的參數來控制允許上傳什么類型的文件。 在上面的控制器中,你設置了下面的這些參數: ~~~ $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); // Alternately you can set preferences by calling the ``initialize()`` method. Useful if you auto-load the class: $this->upload->initialize($config); ~~~ 上面的參數根據它的名稱就能很容易理解,下表列出了所有可用的參數。 ### 參數 下表列出了所有可用的參數,當沒有指定參數時程序會使用默認值。 | 參數 | 默認值 | 選項 | 描述 | | --- | --- | --- | --- | | **upload_path** | None | None | 文件上傳的位置,必須是可寫的,可以是相對路徑或絕對路徑 | | **allowed_types** | None | None | 允許上的文件 MIME 類型,通常文件的后綴名可作為 MIME 類型 可以是數組,也可以是以管道符(|)分割的字符串 | | **file_name** | None | Desired file name | 如果設置了,CodeIgniter 將會使用該參數重命名上傳的文件 設置的文件名后綴必須也要是允許的文件類型 如果沒有設置后綴,將使用原文件的后綴名 | | **file_ext_tolower** | FALSE | TRUE/FALSE (boolean) | 如果設置為 TRUE ,文件后綴名將轉換為小寫 | | **overwrite** | FALSE | TRUE/FALSE (boolean) | 如果設置為 TRUE ,上傳的文件如果和已有的文件同名,將會覆蓋已存在文件 如果設置為 FALSE ,將會在文件名后加上一個數字 | | **max_size** | 0 | None | 允許上傳文件大小的最大值(單位 KB),設置為 0 表示無限制 注意:大多數 PHP 會有它們自己的限制值,定義在 php.ini 文件中 通常是默認的 2 MB (2048 KB)。 | | **max_width** | 0 | None | 圖片的最大寬度(單位為像素),設置為 0 表示無限制 | | **max_height** | 0 | None | 圖片的最大高度(單位為像素),設置為 0 表示無限制 | | **min_width** | 0 | None | 圖片的最小寬度(單位為像素),設置為 0 表示無限制 | | **min_height** | 0 | None | 圖片的最小高度(單位為像素),設置為 0 表示無限制 | | **max_filename** | 0 | None | 文件名的最大長度,設置為 0 表示無限制 | | **max_filename_increment** | 100 | None | 當 overwrite 參數設置為 FALSE 時,將會在同名文件的后面加上一個自增的數字 這個參數用于設置這個數字的最大值 | | **encrypt_name** | FALSE | TRUE/FALSE (boolean) | 如果設置為 TRUE ,文件名將會轉換為一個隨機的字符串 如果你不希望上傳文件的人知道保存后的文件名,這個參數會很有用 | | **remove_spaces** | TRUE | TRUE/FALSE (boolean) | 如果設置為 TRUE ,文件名中的所有空格將轉換為下劃線,推薦這樣做 | | **detect_mime** | TRUE | TRUE/FALSE (boolean) | 如果設置為 TRUE ,將會在服務端對文件類型進行檢測,可以預防代碼注入攻擊 除非不得已,請不要禁用該選項,這將導致安全風險 | | **mod_mime_fix** | TRUE | TRUE/FALSE (boolean) | 如果設置為 TRUE ,那么帶有多個后綴名的文件將會添加一個下劃線后綴 這樣可以避免觸發?[Apache mod_mime](http://httpd.apache.org/docs/2.0/mod/mod_mime.html#multipleext)?。 如果你的上傳目錄是公開的,請不要關閉該選項,這將導致安全風險 | ### 在配置文件中設置參數 如果你不喜歡使用上面的方法來設置參數,你可以將參數保存到配置文件中。你只需簡單的創建一個文件 upload.php 并將 $config 數組放到該文件中,然后保存文件到?**config/upload.php**?,這些參數將會自動被使用。 如果你在配置文件中設置參數,那么你就不需要使用$this->upload->initialize()?方法了。 ## 類參考 classCI_Upload >[info] ### initialize([array $config = array()[,?$reset = TRUE]]) 參數: * **$config**?(array) -- Preferences * **$reset**?(bool) -- Whether to reset preferences (that are not provided in $config) to their defaults 返回: CI_Upload instance (method chaining) 返回類型: CI_Upload >[info] ### do_upload([$field = 'userfile']) 參數: * **$field**?(string) -- Name of the form field 返回: TRUE on success, FALSE on failure 返回類型: bool 根據你設置的參數上傳文件。 > 注解 > 默認情況下上傳文件是來自于表單的 userfile 字段,而且表單應該是 "multipart" 類型。 ~~~ <form method="post" action="some_action" enctype="multipart/form-data" /> ~~~ 如果你想設置你自己的字段,可以將字段名傳給?do_upload()?方法: ~~~ $field_name = "some_field_name"; $this->upload->do_upload($field_name); ~~~ >[info] ### display_errors([$open = ''[,?$close = '']]) 參數: * **$open**?(string) -- Opening markup * **$close**?(string) -- Closing markup 返回: Formatted error message(s) 返回類型: string 如果?do_upload()?方法返回 FALSE ,可以使用該方法來獲取錯誤信息。 該方法返回所有的錯誤信息,而不是是直接顯示出來。 **格式化錯誤信息** > > > 默認情況下該方法會將錯誤信息包在 標簽中,你可以設置你自己的標簽: > > > > > > ~~~ > $this->upload->display_errors('<p>', '</p>'); > ~~~ > > > > > > >[info] ### data([$index = NULL]) 參數: * **$data**?(string) -- Element to return instead of the full array 返回: Information about the uploaded file 返回類型: mixed 該方法返回一個數組,包含你上傳的文件的所有信息,下面是數組的原型: ~~~ Array ( [file_name] => mypic.jpg [file_type] => image/jpeg [file_path] => /path/to/your/upload/ [full_path] => /path/to/your/upload/jpg.jpg [raw_name] => mypic [orig_name] => mypic.jpg [client_name] => mypic.jpg [file_ext] => .jpg [file_size] => 22.2 [is_image] => 1 [image_width] => 800 [image_height] => 600 [image_type] => jpeg [image_size_str] => width="800" height="200" ) ~~~ 你也可以只返回數組中的一項: ~~~ $this->upload->data('file_name'); // Returns: mypic.jpg ~~~ 下表解釋了上面列出的所有數組項: | 項 | 描述 | | --- | --- | | file_name | 上傳文件的文件名,包含后綴名 | | file_type | 文件的 MIME 類型 | | file_path | 文件的絕對路徑 | | full_path | 文件的絕對路徑,包含文件名 | | raw_name | 文件名,不含后綴名 | | orig_name | 原始的文件名,只有在使用了 encrypt_name 參數時該值才有用 | | client_name | 用戶提交過來的文件名,還沒有對該文件名做任何處理 | | file_ext | 文件后綴名,包括句點 | | file_size | 文件大小(單位 kb) | | is_image | 文件是否為圖片(1 = image. 0 = not.) | | image_width | 圖片寬度 | | image_height | 圖片高度 | | image_type | 圖片類型(通常是不帶句點的文件后綴名) | | image_size_str | 一個包含了圖片寬度和高度的字符串(用于放在 image 標簽中) |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看