如何在ajax jQuery文件中获取tmp名称?

时间:2016-03-21 10:35:19

标签: javascript php jquery ajax

我通过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

1 个答案:

答案 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评论,该评论验证了我上述观点,指出您的文件不会按照您目前的方式上传。