将照片从javascript发送到php


send photo from javascript to php

我正试图用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 post在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;

错误是您将文件作为正常输入发送,因此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);
$photo_location = $_FILES['file']['photo'];