使用JavaScript在服务器上保存文件

时间:2016-01-02 20:36:20

标签: javascript php json ajax

Js代码

var server = '';
var orig_chat = chatUpdateSucess;
chatUpdateSucess = function(o){
if (o.GlobalChats && o.GlobalChats.length > 0) {
    //TODO: Add setting to enable/diosable this
    console.log(JSON.stringify(o.GlobalChats));

    var xhr = new XMLHttpRequest();
    xhr.open("POST", server+"/api.php?request=log_gc");
    xhr.send(JSON.stringify(o.GlobalChats));

}
orig_chat.apply(this, arguments);
};

名为api.php的服务器代码

<?php 
header("Access-Control-Allow-Origin: *");
if(!empty($_POST['o.GlobalChats'])){
 $data = $_POST['o.GlobalChats'];
 $fname = time() . ".txt";//generates random name

  $file = fopen("" .$fname, 'w');//creates new file
   fwrite($file, $fclose($file);
  }

 ?>

console.log输出 [{ “PlayerId”:237186​​ “toPlayerId”:0 “chatid”:16606292, “加入”: “/日期(1451764948837)/”, “addedText”: “20点02分”, “PlayerLink”:“P = Kodabear | 237186​​ | T?| 78 | 1 | 0 | 0-144-0-240-186-0-0-0-0-0-0-0-0 | #IKnowAFighter | Neurofibromatosis Awareness day / Month | 5- 404-282-59“,”text“:”真实聊天的例子“}]

我创建了一个js,每次更新游戏中的聊天时都会向我的服务器发送文件。但我遇到服务器端代码问题,任何建议都会有很大的帮助。 (PHP代码在这里成立

Saving a text file on server using JavaScript

1 个答案:

答案 0 :(得分:3)

尝试var_dump($_POST['o.GlobalChats'])查看您的数据是否到达服务器。

好像你没有正确地将文件写入系统。请阅读手册(http://php.net/manual/pt_BR/function.fwrite.php

中的示例

此外,使用time()并不安全,因为在极端情况下可能会在相同的UNIX时间戳创建两个文件,而另一个文件会覆盖另一个

尝试这样的事情:

$data = $_POST['o.GlobalChats'];

$fname = time() . "-" . rand ( 1 , 10000 ) . ".txt";

$handle = fopen($fname, 'w');

fwrite($handle, $data);

fclose($handle);