2015-12-10 204 views
0

在這裏我試圖在php中上傳jpeg,pdf,png和word文件格式。但我無法上傳pdf,png和word文件格式,但我已成功上傳jpeg文件格式。所以這是我嘗試過的代碼。請幫助編輯此代碼,以便將jpeg文件格式的其他文件格式上傳。在php中上傳pdf和word文件

<?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>"; 
     } 
     } 
      } 
     } 
      ?> 
+0

做當您嘗試上傳巴紐/ .DOC你能拿到什麼錯誤? – bIgBoY

回答

0

嘗試改變:

$_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' 
  • 注意: 還會檢查您嘗試上傳的文件的文件大小是否大於允許值。
+0

我試過這個,但它不行。請幫助我。 –

+0

您是否檢查您嘗試上傳的文件的大小是否大於允許的文件大小? – Dray

+0

謝謝兄弟。 –

0
  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)) { ... }