2014-12-01 26 views
0

我正在創建一個腳本,其中只有特定的視頻類型可以上傳,但目前我卡住了。特定的文件類型上傳不起作用

這裏是我的代碼 -

<?php 

$title = isset($_POST['title']) ? $_POST['title'] : null; 
$desc = nl2br(isset($_POST['description'])) ? $_POST['description'] : null; 
$name = isset($_POST['fullname']) ? $_POST['fullname'] : null; 
$email = isset($_POST['email']) ? $_POST['email'] : null; 
$country = isset($_POST['country']) ? $_POST['country'] : null; 

$video = isset($_FILES['video']); 
$videoname = isset($_FILES['video']['name']); 
$videotmp = isset($_FILES['video']['tmp_name']); 
$videosize = isset($_FILES['video']['size']); 
$videotype = isset($_FILES['video']['type']); 
$videoacceptable = array(
     "video/mp4", 
     "video/ogg", 
     "video/quicktime", 
); 

$videopath = "/videos/"; 
$videofile = $videopath . $video; 

if(isset($_POST['submit'])) { 

//ERROR MESSAGES/VALIDATION 

if(empty($title)) { 
    $errors[] = "A title is required"; 
    echo "<style type=\"text/css\"> #title { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} elseif(strlen($title) > 80) { 
    $errors[] = "Your title can only be 80 characters long"; 
    echo "<style type=\"text/css\"> #title { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} 
if(empty($desc)) { 
    $errors[] = "A description is required"; 
    echo "<style type=\"text/css\"> #description { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} 
if(empty($name)) { 
    $errors[] = "Please enter your full name"; 
    echo "<style type=\"text/css\"> #fullname { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} elseif(strlen($name) > 32) { 
    $errors[] = "Your name can only be 32 characters long"; 
    echo "<style type=\"text/css\"> #fullname { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} 
if(empty($email)) { 
    $errors[] = "Please enter your email address"; 
    echo "<style type=\"text/css\"> #email { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} elseif(strlen($email) > 50) { 
    $errors[] = "Your email addess can only be 50 characters long"; 
    echo "<style type=\"text/css\"> #email { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    $errors[] = "Please enter a valid email address"; 
    echo "<style type=\"text/css\"> #email { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
} 
if($videosize = 0) { 
    $errors[] = "You forgot to upload a video"; 
} elseif($videosize >= 20000000) { 
    $errors[] = "Your video size is too large, 20mb max"; 
} elseif(!in_array($videotype, $videoacceptable)) { 
    $errors[] = "The file type is not allowed, only allowed .mp4, .ogg and .mov"; 
} 

if(count($errors) === 0) { 
    $connect = mysqli_connect("localhost","username","password"); 
     if(!$connect) { 
      header("Location:"); // ADD ERROR LINK 
     } 
    $dbselect = mysqli_select_db("database"); 
     if(!$dbselect) { 
      header("Location:"); // ADD ERROR LINK 
     } 

    $query = mysqli_query("INSERT INTO cover_videos(title, desc, name, email, country, videotmp, videotype, videosize, videopath) VALUES('$title','$desc','$name','$email','$country','$videotmp','$videotype','$videosize','$videopath')"); 
    move_uploaded_file($videotmp, $videofile); 

    //SEND AN EMAIL TO THE USER  
    $to = $email; 
    $subject = "Thank's for your upload"; 

    $message = ' 
     <html> 
      <head><title>We have received your video</title></head> 
      <body> 
       <h3>Good News!</h3> 
       <p>We have recieved your video and is awaiting approval.</p> 
      </body> 
     </html> 
    '; 

    $headers = 'FROM: no-replyk' . "\r\n"; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $headers = 'X-Mailer: PHP/' . phpversion(); 

    mail($to, $subject, $message, $headers); 

    header("Location:"); //SUCCESSFUL UPLOAD PAGE 

    } 

} 

?> 

所以發生了什麼時,當我去上傳文件,即時通訊上傳.mov文件,但彈出的錯誤消息「文件類型是不允許的,只允許.mp4,.ogg和.mov「,但.mov mime是在videoacceptable數組中,所以我現在有點卡住了,任何知道最新的問題是什麼?

回答

0
$videoacceptable = array(
    "video/mp4", 
    "video/ogg", 
    "video/quicktime" 
); 

請檢查可能有助於解決問題的方法。

或者是「quicktime」嘗試「mov」。

+0

剛剛嘗試了您的建議,並且仍然彈出錯誤消息,感謝您的建議,儘管 – 2014-12-01 17:29:24

+0

請在執行代碼之前嘗試打印$ videotype。這樣可以幫助您瞭解視頻類型的確切價值。 – 2014-12-02 09:18:11

0
<?php 
if(isset($_POST['submit'])) 
{ 
$video = $_FILES['video']; 
$videoname = $_FILES['video']['name']; 
$videotmp = $_FILES['video']['tmp_name']; 
$videosize = $_FILES['video']['size']; 
echo $videotype = $_FILES['video']['type']; 
$videoacceptable = array(
    "video/mp4", 
    "video/ogg", 
    "video/quicktime" 
); 
$videopath = "/videos/"; 
$videofile = $videopath . $video; 
} 
?> 
<form method='POST' action="" enctype='multipart/form-data'> 
<input type='file' name='video'> 
<input type='submit' name='submit'> 
</form> 

請試試這個。希望它會有所幫助。