我想出了如何使用XMLHttpRequest API将服务器上的本地.TXT文件读入JS,但在我的生命中,我无法将其写入文件。是否可能或仅用于读取文件?
我的读入代码工作正常:
var fReader = new XMLHttpRequest();
fReader.onreadystatechange=function() {
if(fReader.readyState==4 && fReader.status==200) {
parseText(fReader.responseText);//Processes the file.
}}
fReader.open("GET",fFileLoc,true);
fReader.send();
我目前正在使用PHP写入文件,但这远非理想。我真的很想让我们JS去做。有什么想法吗?还有另一种做法吗? PHP是唯一的方法吗?
提前致谢,
-Dave
编辑:@rjmunro +其他人:我发现使用PHP是更好的方法...我的修改后的代码如下。 (C& C欢迎)。
JS:
var fReader = XMLHttpRequest();
//var params = "MODE=GET&File=Data.txt";//To read
//var params = "MODE=POST&File=Data.txt&Message=" + myMessage;//To write
fReader.onreadystatechange=function() {
if(fReader.readyState==4 && fReader.status==200) {
//Not really any response text if writing...
parseText(JSON.parse(fReader.responseText).GET);
}
}
fReader.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
fReader.setRequestHeader("Content-length", params.length);
fReader.setRequestHeader("Connection", "close");
fReader.send(params);
PHP
$MODE = $_POST['MODE'];
switch($MODE) {
case('GET'):
#Read in file and process, then return output.
$return['GET'] = file($_POST['File']);
break;
case('POST'):
if(file_exists($_POST['File'])){
$file = fopen($_POST['File'],"a");
$data = $_POST["Message"];
fwrite($file,$data);
fclose($file);
}
#$return['POST'] = "some message?";
break;
}
echo json_encode($return);
我唯一没有100%使用此解决方案是为什么我必须setRequestHeader? Chrome实际上似乎不喜欢这样......我从其他帖子中删除了代码。
答案 0 :(得分:1)
XMLHttpRequest允许您发出HTTP请求。
如果要使用它来写入文件,则HTTP服务器必须通过编写文件来响应请求。
您可以使用the PUT verb执行此操作(请注意,您必须configure HTTP服务器允许此操作,默认情况下,任何HTTP服务器都不允许任意用户将文件写入服务器的磁盘)
您也可以使用POST或其他请求类型传递数据。
PHP是唯一的方法吗?
您可以在服务器上使用您喜欢的任何编程语言(取决于服务器支持的内容,例如,如果您想使用C#,那么您几乎肯定需要具有IIS和ASP.NET的Windows服务器)。如果你想使用JavaScript那么many options,其中Node.js比其他人明显更受欢迎。
答案 1 :(得分:0)
您可以配置apache来接受PUT请求,然后使用XMLHttpRequest发送一个(我使用jQuery.ajax()
来抽象)。
最好让PHP(或其他服务器端语言)为您处理它,因为仅使用Apache来控制身份验证很困难。