2013-07-14 63 views
2

我使用jQuery來檢索圖像並將其發佈到另一種形式:提交的數據,而不是爲輸入表單文件

handler = function(data, status) { 
    ... 
    var fd; 
    fd = new FormData; 
    fd.append("file", data); 
    jQuery.ajax({ 
     url: target_url, 
     data: fd, 
     processData: false, 
     contentType: false, 
     type: "POST", 
     complete: function(xhr, status) { 
     console.log(xhr.status); 
     console.log(xhr.statusCode); 
     } 
    }); 
}; 
jQuery.get(imageUrl, null, handler); 

的形式看起來是這樣的:

<form> 
    <input type="file" name="file" /> 
    ... 
</form> 

事情沒有按預期工作。我從服務器端獲得200響應,並且它呈現具有預填充的一些值的表單。

我也試着設置contentType: "multipart/form-data"

任何想法,爲什麼這是不工作?

回答

1

您發送的字符串不會被識別爲文件。 嘗試發送一個blob

fd.append("file", new Blob([data], { "type" : "text/plain" })); 

我敢肯定,這將只對文本文件的工作,除非你設置的原始請求的responseType。

+0

嗯。如果這是一個圖像,我是否需要相應地設置類型? 「image/png」等。 – jabalsad

+0

那麼,那肯定會做點什麼。謝謝:)現在我只需要弄清楚爲什麼圖像的大小發生了變化。原始圖像大小15k,提交的數據= 35k:/ – jabalsad

+0

@jabalsad大小因爲圖像數據已轉換爲文本以防止出現此問題而發生變化,因此您必須設置XMLHttpRequest對象的「responseType」屬性(以blob)。 – Musa