我通过ajax上传图片,在ajax调用期间,我想设置上传文件的tmp名称,但它返回undefined
。
这是我的代码:
function imageIsLoaded(e) {
$("#file").css("color", "red");
$('#image_preview').css("display", "block");
$('#previewing').attr('src', e.target.result);
//$('#previewing').attr('src', imagetempname);
$('#previewing').attr('width', '150px');
$('#previewing').attr('height', '150px');
//alert(e.target.result);
};
$("#file").change(function() {
$("#message").empty(); // To remove the previous error message
var file = this.files[0];
var imagefile = file.type;
var imagename = file.name;
var imagetempname = file.tmp_name;
var match = ["image/jpeg", "image/png", "image/jpg"];
if (!((imagefile == match[0]) || (imagefile == match[1]) || (imagefile == match[2]))) {
$('#previewing').attr('src', 'noimage.png');
$("#message").html("<p id='error'>Please Select A valid Image File</p>" + "<h4>Note</h4>" + "<span id='error_message'>Only jpeg, jpg and png Images type allowed</span>");
return false;
} else {
var reader = new FileReader();
reader.onload = imageIsLoaded;
reader.readAsDataURL(this.files[0]);
document.getElementById("imagename").value = imagename;
alert(imagetempname);
document.getElementById("imagetmpname").value = imagetempname;
}
});
在我alert(imagetempname);
时,它会返回undefined
。
答案 0 :(得分:0)
您的问题是您尝试从$ _GET超全局访问该文件而不是$ _FILES超全局文件。
print_r($_FILES);
您的ajax也存在问题。
function change(val){
$.ajax({
url:"filecheck.php?id=" + val,
type: "post",
data: $('#yourformid').serialize()
success:function(res){
alert(res);
}
});}
否则你只需要检查:
if(!empty($_FILES)) {
$name = $_FILES['file']['name'];
$tmp = $_FILES['file']['tmp_name'];}
注意强>
请查看代码jaffs评论,该评论验证了我上述观点,指出您的文件不会按照您目前的方式上传。