将照片从javascript发送到php

时间:2015-04-06 19:09:17

标签: javascript php ajax

我正在尝试用ajax将照片从javascript发送到php。 我在html中输入了这个:

<input type="file" class="input-field" id="photo" name="photo">

这在javascript:

var photo = document.getElementById("photo").value;

这在php中:

$photo_location = $_FILES['photo']['tmp_name'];

我正在使用ajax帖子在php中发送照片和其他一些数据。除了照片,所有其他数据都在PHP中正确接收。是getelementbyid .value方法,错误的照片?我从php获得了一个错误未定义的索引照片。

xmlhttp.open("POST", "ajaxpost.php");
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    var payload = "name=" + name + "&price=" + price + "&quantity=" + quantity + "&description=" + description + "&photo=" + photo;
    payload = payload.replace("%20", "+");
    payload = payload.replace("%3D", "=");

    xmlhttp.send( payload );

    return false;

2 个答案:

答案 0 :(得分:1)

错误是您将文​​件作为正常输入发送,因此php将在$ _POST中收到它而不是$ _FILES。您可以使用FormData这样做:

var photo = document.getElementById("photo");

var data=new FormData();
//from inputs
data.append(photo.name,photo.files[0]);
data.append('name',name);
data.append('price',price);
data.append('quantity',quantity);
data.append('description',description);

var xmlhttp=new XMLHttpRequest()
xmlhttp.open("POST", "ajaxpost.php");
xmlhttp.send(data);

答案 1 :(得分:0)

$photo_location = $_FILES['file']['photo'];