我正在尝试用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;
答案 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'];