可以使用AJAX将图像文件发送到PHP吗?

时间:2014-04-30 19:52:41

标签: javascript php ajax

我正在尝试使用AJAX发送图像文件和其他文本信息,但是我无法让文件部分工作,因为我不太明白该怎么做。

这是Javascript:

  //The user selects a file using an input element with the ID "picInput"

  var picInput = document.getElementById("picInput");
  picValue = picInput.files[0];

  //"postString" is the string with all the other text information that is being sent
  //All the other info in it is received fine, it is just the picture having problems

  postString += "pic=" + picValue;

  var xmlhttp = new XMLHttpRequest;
  xmlhttp.open("POST","handler.php",true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlhttp.send(postString);

这是PHP:

$pic = $_FILES['pic'];
ftp_put($ftpCon,"pics/".$name,$pic,FTP_BINARY) or die(mysqli_error($con));

使用此代码,我得到“$ pic = $ _FILES ['pic']的'未定义索引';”线。

如果我将$ _FILES更改为$ _POST,我会收到“ftp_put([object File]):无法打开流:没有这样的文件或目录”

1 个答案:

答案 0 :(得分:0)

您是否想尝试表单内容?如果是,您可以尝试AJAX form Plugin

$("body").on('submit','form#someForm', function(e){
    e.preventDefault();
    $(this).ajaxSubmit({
        target: '#output',
        success: afterSuccess
    });
});

然后你必须把文件和其他内容放在

<form id="someForm" method="post" action="handler.php"></form>

并将文件输入命名为

<input type="file" name="pic" />

完成所有操作后将调用afterSuccess函数

#output可用于显示进度或类似的内容