2015-04-06 45 views
-1

我想用ajax發送從javascript到php的照片。 我在HTML此輸入:從javascript發送照片到php

<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; 
+1

告訴我們您的形式和Ajax代碼 –

+0

我已經添加了Ajax代碼 – user784512

+0

檢查:http://stackoverflow.com/questions/23980733/jquery -ajax-file-upload-php –

回答

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); 
0
$photo_location = $_FILES['file']['photo']; 
+0

我試過了,它的undefined再次嘗試 – user784512

+0

嘗試打印變量:print_r($ _ FILES);看看你得到了什麼? –

+0

我得到這個:Array() – user784512