在这里,我尝试用php上传jpeg、pdf、png和word文件格式。但我无法上传pdf、png和word文件格式。但我已经成功上传了jpeg文件格式。所以这是我尝试过的代码。请帮助编辑这段代码,以上传其他文件格式的jpeg文件格式。
<?php
include_once("db.php");
if(isset($_POST['save'])){
if(($_FILES['file']['type']=='pdf/pdf')
||($_FILES['file']['type']=='image/jpeg')
||($_FILES['file']['type']=='image/png')
&&($_FILES['file']['size']<200000))
{
if($_FILES['file']['error']>0)
{
echo"return code :".$_FILES['file']['error'];
}
//else if(file_exists('upload/'.$_FILES['file']['name']))
//{
//echo $_FILES['file'] ['name']."Already exite";
//}
else if(move_uploaded_file($_FILES['file'] ['tmp_name'],'upload/'.$_FILES['file']['name']))
{
$part =$_FILES['file']['name'];
$sql = mysql_query("INSERT INTO stu (ptype,source,letterno,title,descrip,receiver,image)
VALUES ('{$_POST['pt']}',
'{$_POST['so']}',
'{$_POST['ln']}',
'{$_POST['lti']}',
'{$_POST['dic']}',
'{$_POST['re']}',
'{$part}')");
//$sql= "INSERT INTO stu (ptype,source, letterno, title,descrip,receiver,image) VALUES ('$p', '$s', '$l', '$t','$d','$r','$part')";
if ($sql){
echo"jhgjhgjh";
//echo "successfully insert thise record";
//echo "<script type='text/javascript'>alert('successfully insert thise record')</script>";
echo "<script type='text/javascript'>alert('successfully insert thise record')</script>";
}
}
}
}
?>
- PDF文档有不同的MIME类型:
application/pdf
,您应该使用它 - Microsoft Word文档MIME类型
application/msword
不在您允许的MIME类型列表中,因此无法通过您的检查 - 你的大小限制是200kib,大约是195kb,可能你的文档比这个(相当低的)限制大
- 提高本地文件限制后,请检查php.ini中的
upload_max_filesize
设置,因为它是下一个大小限制边界,所以您可能会坚持
除此之外,您的代码在MIME类型检查条件中存在逻辑问题,因为您没有将MIME检查分组到单独的逻辑值中。你的条件实际上是:if (a OR b OR c AND d)
,而应该是if ((a OR b OR c) AND d)
。
将此代码重写为会更好
$allowed_mime_types = array('image/png','image/jpeg','application/pdf','application/msword');
$size_limit = 200000;
if ((in_array($_FILES['file']['type'], $allowed_mime_types)) && ($_FILES['file']['size'] < $size_limit)) { ... }
尝试更改:
$_FILES['file']['type']=='pdf/pdf'
至:
$_FILES['file']['type']=='application/pdf'
对于文档类型:
$_FILES['file']['type']=='application/msword'
对于docx:
$_FILES['file']['type']=='application/vnd.openxmlformats-officedocument.wordprocessingml.document'
- 注:还要检查您尝试上传的文件的文件大小是否不大于允许的大小