在 HTML 表单中指定文件格式上传


Specify file format upload in HTML forms

可能的重复项:
如何限制<输入类型>使其只能选择.pdf文件?

我的上传表单是

<form action="chainresult.php" method="post" enctype="multipart/form-data" />
   <div>  Upload a PDB file :  <br />
   <input type="hidden" name="MAX_FILE_SIZE" value="10485760"/>
   <input type="file" name="userfile" id="userfile" size="50000000" /><br />
   <input type="submit" value="GET SEQUENCE" />  </div>
</form>  

我只想接受扩展名为四个.pdb字母的文件,例如"ABCD.pdb",我该如何实现?
上传.php是

<?php  
    $upfile = 'uploads/'.$_FILES['userfile']['name'];  if (is_uploaded_file($_FILES['userfile']['tmp_name']))  
    {  
    if (!move_uploaded_file($_FILES['userfile']['tmp_name'],upfile))  
    {  
    echo 'Problem: Could not move file to destination directory';  
    exit;  
    }  
    }  
    else  
    {  
    echo 'Problem: Possible file upload attack. Filename: ';  
    echo $_FILES['userfile']['name'];  
    exit;  
    }   ?>

你有一个选择。 上传文件时,会为其指定一个临时名称并存储在 TEMP 中,然后在批准后 - 根据您的代码 - 移动并赋予上传名称(默认情况下(或您规定的 4 个字母。 这是更大的问题...覆盖?4个字母不允许你太多的多样性 - 如果你在米奇软件上......哎呀!如果您在 Linux 上将大小写转录为较低(首选(,检索可能会非常混乱。

与ahhmarr说的相同,但我正在使用此功能来确定文件扩展名:

function getExtension($str){
    $i = strrpos($str,'.');
    if(!$i)
        return '';
    $l = strlen($str) - $i;
    $ext = substr($str, $i+1, $l);
    return $ext;
}
$name = $_FILES['userfile']['name'];
$ext  = getExtension($name); 

您可以在上传的顶部添加这些行.php

$name=$_FILES['userfile']['name']; 
$ext=substr($name,-3);
if(strlen($name)>8 || $ext!='pdb') 
{ 
echo 'file name is either more than 4 character or the extension is not supported'; 
exit; 
}

这将检查文件名是否小于或等于 8 个字符(文件名 4 个字符 1 的 . 和扩展名的 3,因此 4+1+3(

您也可以通过JavaScript进行验证

<script type="text/javascript">
        function validate()
{
    var flag=true;
    var fullName=document.getElementById('userfile').value;
    file=fullName.match(/([^'/'']+)$/g);
    ex=file[0].match(/[^.]+$/);
    if(file[0].length>8 || ex!='pdb')
    {
        alert('file Name or extension not supported');
        flag=false;
    }
    return flag;
}
</script>
<form action="chainresult.php" method="post" enctype="multipart/form-data" onSubmit="return validate();" >
   <div>  Upload a PDB file :  <br />
   <input type="hidden" name="MAX_FILE_SIZE" value="10485760"/>
   <input type="file" name="userfile" id="userfile" size="50000000" /><br />
   <input type="submit" value="GET SEQUENCE" />  </div>
</form>