【发布时间】:2013-11-05 04:30:12
【问题描述】:
我一直在尝试创建一个注册表单,要求学生在最后上传文件。但是,通过 jQuery 获取表单值后,PHP 文档似乎无法获取我上传的表单。有任何想法吗?
表格:
<form id="joinUs" enctype="multipart/form-data" method="post">
<!--various form fields-->
<input type="file" name="transcript" id="transcript">
<div class="button" id="submit">Submit!</div>
</form>
jQuery:
$("#submit").click(function(){
//firstName, lastName, grade, studentID, email, phone are all form values
var data = "firstName="+firstName+"&lastName="+lastName+"&grade="+grade+"&studentID="+studentID+"&email="+email+"&phone="+phone;
$.ajax({
type: "POST",
url: "join_submit.php",
data: data,
success: function() {
location.href="http://mvcsf.com/new/success.php";
}
});
join_submit.php
$allowedExtensions = array("pdf");
$max_filesize = 20000;
$upload_path = "docs/transcripts";
$filename = $_FILES["transcript"]["name"];
$filesize = $_FILES["transcript"]["size"];
$extension = $_FILES["transcript"]["type"];
if ($_FILES["transcript"]["error"] > 0) {
echo "Error: " . $_FILES["transcript"]["error"] . "<br />";
}
else if((in_array($extension, $allowedExtensions)) && ($filesize < $max_filesize)) {
move_uploaded_file($_FILES["transcript"]["tmp_name"], $upload_path . $filename);
}
我运行了这个,没有出错。我也尝试打印出文件名,除了没有打印出来。
【问题讨论】:
-
您需要将文件作为 FormData() 传递。否则在另一端获取不到文件
-
唯一想到的是,您是否使用大于或小于
20000的文件进行了测试?这不是很大,20,000 字节。如果是这样,那么这就是将停止上传的一件事。其次,尝试在$upload_path = "docs/transcripts";末尾添加正斜杠,例如$upload_path = "docs/transcripts/";,并确保该文件夹具有写权限,包括子文件夹。 -
@RoyMJ,谢谢,我会看看!
-
@Fred-ii-,我尝试使用小于 20,000 的文件上传文件。我检查了文件权限,它设置为 777。我会尝试正斜杠。
标签: php jquery file-upload