【问题标题】:XMLHttpRequest text send 404 errorXMLHttpRequest 文本发送 404 错误
【发布时间】:2014-04-13 00:03:16
【问题描述】:

我的服务器上有一个文本文件,我想使用 XMLHttpRequest 在其中上传一个文本。它通过 GET 方法成功下载,但是当我尝试 POST 时出现 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);

【问题讨论】:

  • 您无法通过 javascript 将文件上传到您的服务器
  • @Xone 当然可以,只是不能直接这样。
  • 由于URL相同,所以服务器坏了。更糟糕的是,它应该发回405 Method Not Allowed 而不是404 Not Found。无论哪种方式,问题都出在服务器上,您需要对其进行设置以处理 POST 请求。

标签: javascript post xmlhttprequest


【解决方案1】:

在大多数地方进行直接上传会是一个安全问题,并且通常是不允许的...您需要做的是在您的服务器上有一个中间层来处理请求并将文件写入磁盘安全。

您可以使用以下方式轻松上传文件:

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?),我可以提供一些示例代码来处理服务器端的上传。

【讨论】:

  • 谢谢@greg 我在kissr.com 上做一些测试,这是一个dropbox 虚拟主机页面。它不支持php,这就是为什么我想知道是否可以使用js上传文件。如果没有上传处理程序,它将无法工作。
  • @SercanAltundaş 没问题。如果你正在使用 Dropbox,你可能想看看他们的 Datastore API dropbox.com/developers/datastore/sdks/js
  • 另外,如果这回答了您的问题,能否麻烦您将其标记为已接受? (或澄清我如何改进它)
猜你喜欢
  • 2014-06-16
  • 2018-04-29
  • 2013-09-14
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2015-02-06
相关资源
最近更新 更多