【发布时间】:2014-06-05 19:32:07
【问题描述】:
我想使用 Ajax 将图像上传到服务器,但是出现了问题。有人请帮助我这里有什么问题。我可以使用提交表单而不是 ajax 提交图像。 这是我的代码:
html:
<div id="uploadPic" onclick="getFile()">
Select a photo to upload
</div>
<form name="myForm" id="avatar_form" enctype="multipart/form-data" method="post" action="">
<div style='height: 0px;width:0px; overflow:hidden;'>
<input id="upfile" class="botpic" type="file" name="avatar" value="upload" required="" onchange="sub1()">
</div>
</form>
javascript:
function getFile(){
document.getElementById("upfile").click();
}
function sub1(){
var photo = document.getElementById("upfile");
var file = photo.files[0];
data = new FormData();
data.append('file', file);
$.ajax({
url: 'url',
data: data
enctype: 'multipart/form-data',
processData: false, // do not process the data as url encoded params
contentType: false, // by default jQuery sets this to urlencoded string
type: 'POST',
success: function ( output ) {
document.getElementById('picTmp').innerHTML = output;;
}
});
}
PHP 代码:
if (isset($_FILES["avatar"]["name"]) && $_FILES["avatar"]["tmp_name"] != ""){
$fileName = $_FILES["avatar"]["name"];
$fileTmpLoc = $_FILES["avatar"]["tmp_name"];
$fileType = $_FILES["avatar"]["type"];
$fileSize = $_FILES["avatar"]["size"];
$fileErrorMsg = $_FILES["avatar"]["error"];
$kaboom = explode(".", $fileName);
$fileExt = end($kaboom);
list($width, $height) = getimagesize($fileTmpLoc);
.......
}
【问题讨论】:
-
您是否遇到服务器端或客户端错误?
-
它似乎将数据发送到服务器,但它无法进入 if (isset..)。我测试了没有 ajax 购买常规提交表单的 php 代码。一切正常。图像更新正常,但页面需要刷新才能显示更新的图像。所以,我打算使用 ajax,但根本做不到。
-
使用 var_dump 函数检查请求变量。 var_dump($_POST); var_dump($_FILES);事情就清楚了。
标签: javascript php jquery ajax