文件上傳用到全局數組: $_FILES

只需要把下面的 <button onclick="post()">提交</button> 改為 <input type="button" onclick="post()" value="提交"/>就不會刷新頁面了!!!
參考 http://bbs.csdn.net/topics/391852021
what fuck ... sb html 我在那愣是提交了半個小時,還是一直刷新,找不到問題所在。 原因是我的提交按鈕用的是button標簽,后來改成了 <input type="button"> 就尼瑪可以了 真是無語了


file.html
<html>
<head>
<meta content="" charset="UTF-8"/>
<script src="./jquery.js"></script>
</head>
<form enctype="multipart/form-data" enctype="multipart/form-data">
請選擇文件<input type="file" name="file"/>
<button onclick="post();">提交</button>
</form>
<script>
function post() {
alert("in post");
var formData = new FormData();
//var formData = new FormData($("form")[0]);
formData.append('file', $('input[name=file]')[0].files[0]);
$.ajax({
url: './file.php',
type: 'POST',
cache: false,
data: formData,
processData: false,
contentType: false,
async: true
}).success(function(){
alert("success!");
}).error(function(){
alert("error");
});
}
</script>
</html>
file.php
<?php
file_put_contents("./a.txt", var_export($_FILES, true));
//var_dump($_FILES);exit;
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "text/plain"))
&& ($_FILES["file"]["size"] < 20000))
{
file_put_contents("./a.txt", "\n in \n", FILE_APPEND);
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
file_put_contents("./a.txt", "\n in else\n", FILE_APPEND);
/* echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
*/
if (file_exists( $_FILES["file"]["name"]))
{
// echo $_FILES["file"]["name"] . " already exists. ";
file_put_contents("./a.txt", "\n already exists \n", FILE_APPEND);
}
else
{
file_put_contents("./a.txt", "\n in create file \n", FILE_APPEND);
move_uploaded_file($_FILES["file"]["tmp_name"],
$_FILES["file"]["name"]);
// echo "Stored in: " . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>

這樣的結果才是正確的,頁面 /file.html 沒有刷新, 解決辦法是submit 按鈕改成了
<input type="button" value="提交"/>
---------------------------------
而之前的按鈕是 <button>提交</button>,這樣文件上傳成功之后是會刷新頁面的,去請求 /file.html?file=file.txt 這個路徑的文件,很是奇怪!!!

點擊提交


