ThinkPHP3.1實現檔案上傳(支援多檔案上傳)

來源:互聯網
上載者:User

上傳表單
上傳表單無需特別處理,下面是一個最簡單的單檔案上傳表單:

 注意,表單必須添加enctype="multipart/form-data"屬性才能支援檔案上傳功能。

 代碼如下 複製代碼


<form id="upload" method='post' action="__URL__/upload/" enctype="multipart/form-data">
<input name="image" type="file" />
<input type="submit" value="提交" >
</form>

上傳操作
接下來就是定義上傳操作了,我們在Action控制器中添加upload操作方法如下:

要使用上傳功能,首先第一步就是執行個體化上傳類:

 代碼如下 複製代碼

import('ORG.Net.UploadFile');

$upload = new UploadFile();// 執行個體化上傳類

//參數設定

//設定附件上傳目錄
$upload->savePath = './Uploads/';
//設定需要產生縮圖,僅對影像檔有效
$upload->thumb = true;
//設定需要產生縮圖的檔案尾碼
$upload->thumbPrefix = 'm_,s_';  //生產2張縮圖
//設定縮圖最大寬度
$upload->thumbMaxWidth = '200,50';
//設定縮圖最大高度
$upload->thumbMaxHeight = '200,50';

//檔案上傳代碼

public function upload() {
    import('ORG.Net.UploadFile');
    $upload = new UploadFile();// 執行個體化上傳類
    $upload->maxSize  = 3145728 ;// 設定附件上傳大小
    $upload->allowExts  = array('jpg', 'gif', 'png', 'jpeg');// 設定附件上傳類型
    $upload->savePath =  './Public/Uploads/';// 設定附件上傳目錄
    if(!$upload->upload()) {// 上傳錯誤提示錯誤資訊
        $this->error($upload->getErrorMsg());
    }else{// 上傳成功
        $this->success('上傳成功!');
    }
}

注意只支援php檔案哦,其它類型的檔案會提示非法檔案的。

上面講到的是單檔案上傳,如果要多檔案上傳我們只要簡單的對錶單進行處理

多檔案上傳

表單如下寫法

 代碼如下 複製代碼

<input type='file'  name='image1'>
<input type='file'  name='image2'>
<input type='file'  name='image3'>

或者像原生態php多檔案上傳的寫法

<input type='file' name='image[]'>
<input type='file' name='image[]'>
<input type='file' name='image[]'>

php處理方法還是單檔案上傳的沒什麼變化

 代碼如下 複製代碼

import("ORG.Net.UploadFile");
$upload = new UploadFile();
foreach ($_FILES as $key=>$file){
    if(!empty($file['name'])) {
        $upload->autoSub = true;
        $upload->subType   =  'date';
        $info =  $upload->uploadOne($file);
        if($info){ // 儲存附件資訊
            M('Photo')->add($info);
        }else{ // 上傳錯誤
            $this->error($upload->getErrorMsg());
        }
    }
}

最新版本的上傳類包含的功能如下(有些功能需要結合ThinkPHP系統其他類庫):
基本上傳功能
支援批量上傳
支援產生圖片縮圖
自訂參數上傳
上傳檢測(包括大小、尾碼和類型)
支援覆蓋方式上傳
支援上傳類型、附件大小、上傳路徑定義
支援雜湊或者日期子目錄儲存上傳檔案
支援動態定義子目錄儲存檔案
上傳圖片的安全性檢測
支援上傳檔案命名規則
支援對上傳檔案的Hash驗證

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.