我是新來的PHP。我正在寫一個PHP腳本,它將只採取c
,cpp
和java
文件並將它們上傳到服務器。爲什麼我的代碼不能識別文件類型?
這裏是我的代碼:
<?php
if(!empty($_POST["file_submit"]))
{
$allowed_xtensions = array("c","cpp","java");
$tmp_xtension_array = explode(".",$_FILES["file_name"]["name"]);
$xtension = end($tmp_xtension_array);
$type = $_FILES["file_name"]["type"];
if((($type == "text/x-java-source") || ($type == "text/x-csrc") || ($type == "text/x-c")) && in_array($xtension,$xtensions))
{
if($_FILES["file"]["error"] > 0)
{
exit("Unable to process file.\nError : ".$_FILES["file_name"]["error"]);
}
else
{
if(!file_exists("/code/test.",$xtension))
{
if(move_uploaded_file($_FILES["file_name"]["tmp_name"],"/code/test.",$xtension) == false)
{
exit("Unable to process the file.\n");
}
}
}
}
else
{
exit("Invalid File.");
}
}
else
{
$file_form = ' <html>
<body>
<form action="test.php" method="post" enctype="multipart/form-data">
<label for="file"> Select File : </label>
<input type="file" name="file_name" id="file_id"/><br />
<input type="submit" name="file_submit" value="Submit">
</form>
</body>
</html>';
echo $file_form;
}
?>
但每當我上傳C,CPP或java文件,我得到INVALID FILE
響應,雖然我已經上傳了正確的文件。任何人都可以告訴我爲什麼我的代碼顯示這種行爲?
由於安全問題,許多服務器自行拒絕源代碼文件。你使用託管服務器還是像xampp這樣的本地服務器? –
我想你正在用字符串模式檢查MIME類型。 –
順便說一句:我用'||'檢查多個條件遇到了很多麻煩。你有沒有嘗試將它們分開,所以每種類型都有一個條件? –