2013-02-16 95 views
0

我可以成功地通過使用以下格式,上傳圖片到服務器:FORMDATA圖片上傳

<form id="upload_form" action="/upload" enctype="multipart/form-data" method="post"> 
    <input name="image_url" type="file"> 
    <input id='submit' type="submit" value="Upload"> 
</form> 

我試圖做同樣的事情上面一樣,但編程使用HTML5 FORMDATA()目的。

var formData = new FormData(); 
formData.append('bts_spriteSheet', bts_spritesheet); 

var xhr = new XMLHttpRequest(); 
xhr.open('POST', '/upload', true); 

xhr.onload = function(e) { 
    return console.log('yay its done'); 
}; 
xhr.send(formData); 

我的HTML就是:

<input id="upload_spritesheet" type="file"> 

我不包括或談論什麼

var bts_spritesheet; 

handleSpritesheetSelection = function(evt) { 
    var f, files, reader; 
    files = evt.target.files; 
    f = files[0]; 
    reader = new FileReader(); 
    reader.onload = (function(theFile) { 
    function(e) { 
     bts_spritesheet = e.target.result; 
    }; 
    })(f); 
    return reader.readAsDataURL(f); 
}; 
document.getElementById('upload_spritesheet').addEventListener('change', handleSpritesheetSelection, false); 


以下時,在提交按鈕,用戶點擊被稱爲我在做服務器端,因爲,正如我所說的,使用上面通常的html5表單上傳文件工作正常,所以我知道它一定是我的JS代碼。

任何人都可以看到爲什麼JS代碼產生500 servor錯誤,但HTML格式版本工作正常嗎?

回答

0

比較兩個工作流程的請求正文。 Firefox中的Live HTTP Headers將證明有用。