pdf和word文件在php中上传


pdf and word file uploading in php

在这里,我尝试用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>";
         }
        }
          }
         }
             ?>
  1. PDF文档有不同的MIME类型:application/pdf,您应该使用它
  2. Microsoft Word文档MIME类型application/msword不在您允许的MIME类型列表中,因此无法通过您的检查
  3. 你的大小限制是200kib,大约是195kb,可能你的文档比这个(相当低的)限制大
  4. 提高本地文件限制后,请检查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'
  • 注:还要检查您尝试上传的文件的文件大小是否不大于允许的大小