gpt4 book ai didi

file - 限制 CakePHP 文件输入中的文件类型

转载 作者:行者123 更新时间:2023-12-02 22:31:33 25 4
gpt4 key购买 nike

我只是想知道是否有办法限制文件输入对话框只显示某些类型的文件。我的网页只能接受.bin或.gz文件类型,但用户可以选择其他文件类型并尝试上传。

防止上传错误类型文件的最佳方法是什么?

这是我的文件上传 Controller :

    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');
}
}
}

我基本上检查文件是否存在,否则它太大,当它返回主升级页面时它设置 session 变量。

谢谢

最佳答案

您使用 accept attribute 限制浏览器允许用户在文件选择对话框中选择的内容,尽管并非所有浏览器都支持它。

我认为这应该适用于创建输入(您需要尝试使用 MIME 类型以查看有效的方法):

echo $this->Form->input('MyFile', array('type' => 'file', 'options' => array('accept' => 'application/gzip,application/gzipped,application/octet-stream')));

您还应该在文件到达服务器后通过设置 validation on your model 来验证文件(查看 extensionmimeType 验证规则)。

您还可以在用户选择文件扩展名后使用 JavaScript 验证文件扩展名,如果扩展名错误则清除文件输入字段。

关于file - 限制 CakePHP 文件输入中的文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com