在PHP.MVC中上傳檔案

來源:互聯網
上載者:User

PHP.MVC官方網站上介紹的是使用PEAR::HTTP_Upload 包來處理上傳,而我只是用原始的方式來進行上傳的處理,主要是為了說明在MVC的架構中怎樣上傳檔案.以後我可能會使用PEAR::HTTP_Upload 包來做.

1.開啟phpmvc-config.xml,在<phpmvc-config>標籤中加上:
<controller maxFileSize="1048576" tempDir="C:/www/upload/">
</controller>
其中maxFileSize為上傳檔案大小的最大值,單位是位元組,上傳的檔案會用一個臨時的名字存放在php.ini所

配置的位置,我們當然要把這些檔案另存到我們自己的目錄中,tempDir就是這個目錄.
2.儲存檔案.現在寫一個php頁,裡面寫一個上傳檔案的表單:
<form enctype='multipart/form-data' method='POST' action='Main.php?do=upload'>
    <input type='file' name='file'><br/>
    <input name='submit_files' value='上傳' type='submit'>
</form>
其中enctype一定要設定為multipart/form-data
3.寫一個ActionForm類,比如叫UploadForm,這個類和普通的ActionForm大同小異,但我們要在其中的

validate方法中實現操作上傳的檔案.首先要得到xml設定檔中的值:
$appConfig =& $this->actionServer->getApplicationConfig($request);
$controllerConfig =& $appConfig->getControllerConfig();
$tmpFileDir = $controllerConfig->getTempDir();
$maxFileSize= intval($controllerConfig->getMaxFileSize(),10);
一定要把檔案大小那個用intval函數轉換成整形資料.
接著得到我們上傳的檔案資訊:
$upload_file=$_FILES['file']['tmp_name'];
$upload_file_name=$_FILES['file']['name'];
$upload_file_size=intval($_FILES['file']['size'],10);
['file']是上傳表單的名字.tmp_name,name和size分別是這個檔案的臨時檔案地址(包括檔案名稱),源檔案

名和大小.同樣大小也需要轉換為整形
下面判斷上傳的檔案是否達到我們的大小要求:
if($upload_file_size > $maxFileSize)
{
 //這裡做錯誤處理
}
最後拷貝我們的檔案到目的目錄:
if (!copy($upload_file,$tmpFileDir.$upload_file_name))
{
 //這裡做複製失敗處理
}
4.下面是Action類,這個類就和普通的Action一樣,裡面可以做一些檔案上傳後的處理,也可以直接重新導向

到上傳成功的頁面.
5.將你的ActionForm和Action配置到phpmvc-config.xml中去,運行一下試試吧!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.