我正在尝试使用jQuery Form Plugin执行ajax文件上传。我复制了其中一个例子,当我尝试上传时,我会看到以下文字:
100%
文件无效
控制台指示:
XHR完成加载:
但没有上传任何内容。
我正在使用XAMPP并使用chmod -R 777在我的上传文件夹中启用了permitions。我正在尝试上传的文件是.png。以下是代码:
的index.html
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"><br>
<input type="submit" value="Upload File to Server">
</form>
<div class="progress">
<div class="bar"></div >
<div class="percent">0%</div >
</div>
<div id="status"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script src="ajax.js"></script>
ajax.js
$(document).ready(function() {
var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');
$('form').ajaxForm({
beforeSend: function() {
status.empty();
var percentVal = '0%';
bar.width(percentVal)
percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal)
percent.html(percentVal);
},
success: function() {
var percentVal = '100%';
bar.width(percentVal)
percent.html(percentVal);
},
complete: function(xhr) {
status.html(xhr.responseText);
}
});
});
upload.php的
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
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("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
注意我认为问题是从扩展而不是upload.php发生的,因为我使用这个php进行其他上传,它运行正常。
感谢您的帮助。
答案 0 :(得分:0)
如果扩展程序正常,则可能是大小问题:脚本正在检查$_FILES["file"]["size"] < 20000
。
我会尝试根据您的需要调整该参数。大小单位是千字节,因此20000KB~20MB。尝试检查你的图像是否更大。
$extension = end(explode(".", $_FILES["file"]["name"]))
也可能是个问题,具体取决于您上传的文件:它应该有一个扩展名。
作为最后一次尝试,请检查$_FILES["file"]["type"]
的值,也许您有一些mime类型错误。
答案 1 :(得分:0)