3 回答
TA贡献1895条经验 获得超3个赞
您可以使用is_uploaded_file():
if(!file_exists($_FILES['myfile']['tmp_name']) || !is_uploaded_file($_FILES['myfile']['tmp_name'])) {
echo 'No upload';
}
从文档:
如果以filename命名的文件是通过HTTP POST上传的,则返回TRUE。这有助于确保恶意用户没有试图诱使该脚本在不应该对其运行的文件上工作,例如/ etc / passwd。
如果上传的文件所做的任何事情都可能向用户甚至同一系统上的其他用户透露其内容,则这种检查尤为重要。
编辑:我在FileUpload类中使用它,以防万一:
public function fileUploaded()
{
if(empty($_FILES)) {
return false;
}
$this->file = $_FILES[$this->formField];
if(!file_exists($this->file['tmp_name']) || !is_uploaded_file($this->file['tmp_name'])){
$this->errors['FileNotExists'] = true;
return false;
}
return true;
}
TA贡献1884条经验 获得超4个赞
这段代码对我有用。我正在使用多个文件上传,因此我需要检查是否有任何上传。
HTML部分:
<input name="files[]" type="file" multiple="multiple" />
PHP部分:
if(isset($_FILES['files']) ){
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
if(!empty($_FILES['files']['tmp_name'][$key])){
// things you want to do
}
}
TA贡献1830条经验 获得超3个赞
我不得不重写他的示例以适合我的目的。他的示例假定提交字段的名称是已知的并且可以用硬编码输入。我进一步走了一步,制作了一个函数,该函数将告诉我是否有任何文件被上传,而不必知道上传字段的名称。
/**
* Tests all upload fields to determine whether any files were submitted.
*
* @return boolean
*/
function files_uploaded() {
// bail if there were no upload forms
if(empty($_FILES))
return false;
// check for uploaded files
$files = $_FILES['files']['tmp_name'];
foreach( $files as $field_title => $temp_name ){
if( !empty($temp_name) && is_uploaded_file( $temp_name )){
// found one!
return true;
}
}
// return false if no files were found
return false;
}
- 3 回答
- 0 关注
- 442 浏览
添加回答
举报