PHP中codeigniter文件上传类代码实例
codeigniter文件上传类代码实例
文件上传类
CodeIgniter 的文件上传类允许文件被上传。您可以设置指定上传某类型的文件及指定大小的文件。
处理过程
上传文件普遍的过程:
一个上传文件用的表单,允许用户选择一个文件并上传它。
当这个表单被提交,该文件被上传到指定的目录。
同时,该文件将被验证是否符合您设定的要求。
一旦文件上传成功,还要返回一个上传成功的确认窗口。
这里有一个简短的教程来显示这个过程。此后你将会找到相关的参考信息。
创建上传表单
运用文本编辑器创建一个名为upload_form.php的文件,复制以下代码并保存在applications/views/目录里:
你会看到这里运用到了一个表单辅助函数来创建表单的开始标签,文件上传需要一个 multipart form,因为这个表单辅助函数为你创建了一个合适的语句。你还会看到我们运用了一个$error变量,当用户提交该表单出现错误时会显示相关的出错信息。
上传成功的页面
运用文本编辑器创建一个名为upload_success.php的文件。复制以下代码保存到applications/views/目录里:
Your file was successfully uploaded!
$value):?>
:
控制器
运用文本编辑器,创建一个名为upload.php的控制器.复制以下代码并保存到applications/controllers/目录里:
load->helper(array('form', 'url')); } function index() { $this->load->view('upload_form', array('error' => ' ' )); } 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()) { $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); } } } ?>
上传文件目录
你还需要一个目标文件夹来存储上传的图片。在根目录上创建一个名为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 function. Useful if you auto-load the class:
//【如果你在 config文件夹内的 autoload.php 文件中自动加载了 upload 类,或者在构造函数内加载了的话,可以调用初始化函数 initialize 来加载设置。————本括号内由IT不倒翁翻译,加入了自己的理解】
$this->upload->initialize($config);
以上偏好设置将被完全执行。以下是所有偏好设置参数的描述。
偏好设置参数
以下偏好设置参数是可用的。当你没有特别指定偏好设置参数时,默认值如下:
偏好设置 默认值 选项 描述
upload_path None None 文件上传路径。该路径必须是可写的,相对路径和绝对路径均可以。
allowed_types None None 允许上传文件的MIME类型;通常文件扩展名可以做为MIME类型. 允许多个类型用竖线‘|’分开
file_name None 想要使用的文件名
如果设置了这个参数,CodeIgniter 将根据这里设置的文件名来对上传的文件进行重命名。文件名中的扩展名也必须是允许的文件类型。
overwrite FALSE TRUE/FALSE (boolean) 是否覆盖。该参数为TRUE时,如果上传文件时碰到重名文件,将会把原文件覆盖;如果该参数为FALSE,上传文件重名时,CI将会在新文件的文件名后面加一个数字。
max_size 0 None 允许上传文件大小的最大值(以K为单位)。该参数为0则不限制。注意:通常PHP也有这项限制,可以在php.ini文件中指定。通常默认为2MB。
max_width 0 None 上传文件的宽度最大值(像素为单位)。0为不限制。
max_height 0 None 上传文件的高度最大值(像素为单位)。0为不限制。
max_filename 0 None 文件名的最大长度。0为不限制。
encrypt_name FALSE TRUE/FALSE (boolean) 是否重命名文件。如果该参数为TRUE,上传的文件将被重命名为随机的加密字符串。当你想让文件上传者也不能区分自己上传的文件的文件名时,是非常有用的。当 overwrite 为 FALSE 时,此选项才起作用。
remove_spaces TRUE TRUE/FALSE (boolean) 参数为TRUE时,文件名中的空格将被替换为下划线。推荐使用。
在配置文件里设置偏好设置参数
如果你不愿意应用如上方法进行偏好设置,你可以用一个配置文件来取代它。简单创建一个名为upload.php的文件,添加 $config数组到该文件里,然后保存文件到:config/upload.php,它将被自动加载。当你把配置参数保存到该文件里,你不需要用$this->upload->initialize函数进行手动加载。
运用到的函数
以下函数被运用
$this->upload->do_upload()
根据你的偏好配置参数执行操作。注意:默认情况下上传的文件来自于提交表单里名为userfile的文件域,并且该表单必须是 "multipart"类型:
如果你想在执行do_upload函数之前自定义自己的文件域名称,可通过以下方法实现:
$field_name = "some_field_name";
$this->upload->do_upload($field_name)
$this->upload->display_errors()
如果do_upload()返回失败,显示错误信息。此函数不会自动输出,而是返回数据,所以你可以按你的要求安排。
格式化错误
上面的函数默认使用
标记错误信息。你可以像这样设置自己的分隔符。
$this->upload->display_errors('
', '
');
$this->upload->data()
这是一个辅助函数,它返回你上传文件的所有相关信息的数组。
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"
)
解释
这里是对上面数组项的解释。
Item Description
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 =是图像。 0 = 不是图像。
image_width 图像宽度.
image_height 图像高度
image_type 文件类型,即文件扩展名(不包括‘.’)
image_size_str 一个包含width和height的字符串。用于放在一个img标签里。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。
