尝试通过XMLHttpRequest()
上传图像时,在了解什么是通过xhr.open(...)
访问文件的正确URL时遇到问题。
下面以this示例为例,说明服务器端代码和所有内容。
var xhr = new XMLHttpRequest();
xhr.open('post','../../../../server/routes/saveImage.js',true);
xhr.onload = function() {
if(this.status ==200) {
resolve(this.response);
} else {
reject (this.statusText);
}
};
Project目录是这样的
关于路径,请让我知道是否有更方便的方法来检查要在url中使用的访问路径或绝对路径。
答案 0 :(得分:1)
我认为在许多层面上都有一个概念上的问题。
首先,当您使用XHRing(ajax)时,该URL表示您正在从CLIENT SIDE访问该URL。因此,假设您有一个应用程序和HTTP发布或获取了一个URL。您是否有来自客户端的文件?答案显然不是。 假设您将应用托管在以下位置:
http://localhost/myapps/app
因此,当您访问./someFile.txt
,../someFile.txt
和../../someFile.txt
时,您实际上是在请求
./someFile.txt-> http://localhost/myapps/app/someFile.txt
../someFile.txt-> http://localhost/myapps/someFile.txt
../../someFile.txt-> http://localhost/someFile.txt
现在,针对您的问题。您需要在某个地方托管 Server Side
上传代码。该示例假定服务器端代码托管在例如http://localhost/upload
中,并使用xhr.open('post','/upload',true);
您需要了解require
ing或import
ing或fs.readFile
文件正在内部访问路径。但是,在托管应用程序时,任何客户端代码(例如Ajax(XHR))都从外部访问该URL。
答案 1 :(得分:0)
问题确实在于设置服务器端路由,这在很大程度上已经弄清楚了,这要归功于@Arkita的回答和@Kasper的评论。但是我继续寻找解决方案,该解决方案对其他人可能不是很有用,因为这首先是一个愚蠢的问题,但是在这里就可以了。
在客户端
xhr.open('post','/saveImage/save',true);
在服务器端,如果您使用的是Express.js或其他基于连接的框架
app.post('/saveImage/save',(req,res,next)=> {....})
我上面链接的示例可能也已过时,this似乎更有帮助。