2013-12-09 151 views
2

我想通過ajax發送一些數據,我嘗試了serializ,但我不斷收到一個錯誤文件名不存在。 表單數據如何通過ajax post發送圖片?

$('#send #submit').on('click', function(e){ 
    e.preventDefault(); 
    $.post("send.php", $("#bend").serialize()) 
    .done(function(data) { 
     alert("Data Loaded: " + data); 
    }); 
}); 

當您單擊提交我嘗試的第一件事是讓文件大小,我得到

警告:和getimagesize():文件名不能爲空

$dateityp = GetImageSize($_FILES['datei']['tmp_name']); 
+1

的可能重複[我怎樣才能上傳文件與jQuery異步?](http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery) –

+0

標準ajax不能做文件上傳。如果你序列化一個畫布圖像,它將是一個普通的POST表單字段,而不是$ _FILES的一部分 –

回答

2

你可以轉換爲base64。一種方法是將圖像繪製到畫布上並使用.toDataURL

您可以將圖像傳遞給這個函數我在谷歌找到了一個base64編碼:

function getBase64Image(img) { 
    var canvas = document.createElement("canvas"); 
    canvas.width = img.width; 
    canvas.height = img.height; 
    var ctx = canvas.getContext("2d"); 
    ctx.drawImage(img, 0, 0); 

    var dataURL = canvas.toDataURL("image/png"); 
    return dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
} 

然後通過AJAX上傳這樣的:

$.ajax({ 
    type: "POST", 
    url: "send.php", 
    data: {image: img} 
}).done(function(respond) { 
    console.log(respond); 
}); 
+0

從個人計算機,我轉換後,我不得不在send.php uncovert? – user3026745