2014-04-13 51 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