我只是想知道是否有辦法限制文件輸入對話框只顯示某些類型的文件。我的網頁只能接受.bin或.gz文件類型,但用戶可以選擇其他文件類型並嘗試上傳它們。限制CakePHP文件輸入中的文件類型
什麼是防止上傳錯誤文件類型的最佳方法?
這裏是我的文件上傳控制器:
public function uploadFile()
{
$this->Session->write('isFileUpload', false);
$this->Session->write('isFileLarge', false);
if($this->request->is('post'))
{
$uploadedFile = array();
// Check if the Document object is set
// If it is set, process the file for uploading,
if(isset($this->request->data['Document']))
{
$filename = $this->request->data['Document']['MyFile']['tmp_name'];
$uploadedFile['MyFile']['name'] = $this->request->data['Document']['MyFile']['name'];
$uploadedFile['MyFile']['type'] = $this->request->data['Document']['MyFile']['type'];
$uploadedFile['MyFile']['size'] = $this->request->data['Document']['MyFile']['size'];
// Move the file to the /home/spectracom folder
$filePath = DS . 'home' . DS . $uploadedFile['MyFile']['name'];
if (move_uploaded_file($filename, $filePath))
{
$this->Session->write('isFileUpload', true);
$this->Session->write('isFileLarge', false);
$this->redirect('/tools/upgradebackup');
}
else
{
$this->Session->write('isFileUpload', false);
$this->Session->write('isFileLarge', true);
$this->redirect('/tools/upgradebackup');
}
}
else
{
$this->Session->write('isFileUpload', false);
$this->Session->write('isFileLarge', true);
$this->redirect('/tools/upgradebackup');
}
}
}
我基本檢查文件是否存在,否則過大,當它返回到主升級頁面它設置會話變量。
感謝
我接觸過這一點。我在服務器端驗證,檢查正確的文件類型。但我也想知道如何限制它的客戶端。我只希望人們只能看到某些文件類型。 – RXC
我剛做了一些快速研究後更新了答案。在可用的情況下使用accept屬性,然後使用JS和模型驗證。 – bjudson
謝謝你。你會知道如何將接受納入這個嗎? 'echo $ this-> Form-> input('MyFile',array('type'=>'file'));' – RXC