2014-04-13 75 views
1

我在我的服務器上有一個文本文件,我想使用XMLHttpRequest上傳文本。它通過GET方法成功下載,但是當我嘗試POST時,我得到了404錯誤。XMLHttpRequest文本發送404錯誤

var r1 = new XMLHttpRequest(); 
r1.open("GET", "db.txt", false); 
r1.send(); 

var str = r1.responseText + "foo text"; 

var r2 = new XMLHttpRequest(); 
r2.open("POST", "db.txt", false); 
r2.send(str); 
+0

你不能通過javascript上傳文件到你的服務器 –

+0

@當然你可以,只是不直接。 – Greg

+0

由於URL相同,服務器已損壞。更糟糕的是,它應該發送一個'405方法不允許'而不是'404 Not Found'。無論哪種方式,問題出在服務器上,您需要設置它來處理POST請求。 – Quentin

回答

0

做一個直接上傳你盡力將是在大多數地方的安全問題,通常不允許......你需要做的是有你的服務器上的一箇中間層來處理請求和將文件安全地寫入磁盤。

您可以使用像這樣輕鬆地上傳一個文件:

var jsonBlob = new Blob([someJSON], {type: "text/plain;charset=utf-8"}); 
var data = new FormData(); 

data.append("filename", "new.json"); 
data.append("json", jsonBlob); 

var xhr = new XMLHttpRequest(); 
var postURL = "http://example.com/post_target"; 
xhr.open("POST", postURL, true); 
xhr.onload = function(e) { 
    if (this.status == 200) { 
    console.log(e.target.response); 
    } 
}; 
xhr.send(data); 

哪裏postURL是可以處理文件上傳的端點。

如果您發佈了您的服務器上可用的語言(PHP?),我可以舉一些示例代碼來處理服務器端的上傳。

+0

Thanks @greg我正在做一些關於kissr.com的測試,它是一個dropbox網頁託管頁面。它不支持PHP,這就是爲什麼我想知道是否可以用js上傳文件。沒有處理器上傳它不會工作。 – Sarge

+0

@SercanAltundaş沒問題。如果你正在使用Dropbox,你可能想看看他們的數據存儲API https://www.dropbox.com/developers/datastore/sdks/js – Greg

+0

如果這回答你的問題,我可以麻煩你標記它公認? (或者說明我如何改進它) – Greg