【问题标题】:Saving a file on server using JavaScript使用 JavaScript 在服务器上保存文件
【发布时间】:2016-01-02 20:36:20
【问题描述】:

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,"add":"/Date(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|神经纤维瘤病意识日/月|5- 404-282-59","text":"真实聊天示例"}]

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

Saving a text file on server using JavaScript

【问题讨论】:

    标签: javascript php json ajax


    【解决方案1】:

    尝试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);
    

    【讨论】:

    • 它正在创建新文件,但它们是空的。
    • [02-Jan-2016 17:34:20 America/Detroit] PHP 警告:fwrite() 期望参数 1 是资源,在 /home/kodabear/public_html/test/api 中给出了 null。 php 在第 9 行
    • 我添加了 var_dump($_POST['o.GlobalChats']) 以查看服务器是否正在获取数据并且它说 null 并且当我添加 var_dump(json_decode(file_get_contents("php:/ /输入”)));我得到 array(1) { [0]=> object(stdClass)#1 (7) { ["PlayerId"]=> int(237186​​) ["toPlayerId"]=> int(0) ["chatid"]= > int(16869047) ["add"]=> string(21) "/Date(1453246164937)/" [" addedText"]=> string(5) "23:29" ["PlayerLink"]=> string(125 ) "p=Kodabear|237186​​|T?|78|1|0|0-144-0-240-186-0-0-0-0-0-0-0-0|#IKnowAFighter|神经纤维瘤病宣传日/月|5-404-282-59" ["text"]=> string(1) "5" } }
    • stackoverflow.com/questions/8893574/php-php-input-vs-post。您要么没有以o.GlobalChats 发送任何内容,要么没有通过POST 请求发送您的数据。
    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多