我正试图用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'];