【问题标题】:Create a file from content of ajax post从 ajax 帖子的内容创建文件
【发布时间】:2014-10-26 15:51:19
【问题描述】:

我想要一个 php 脚本,它可以从 ajax 帖子的内容创建一个文件。名为report.txt的文件

我有这个 php 脚本位于 /var/www/copypaste.test/public_html/index.php

<?php

 header('Access-Control-Allow-Origin: *');
 $report = $_POST['report'];
 echo $report;

 $report_file = fopen("report.txt", "w");
 fwrite($report_file, $report);
?>

我现在有一个简单的 ajax 帖子和一些测试文本

 var text = 'test string';

 var formData = new FormData();
 formData.append('report', text);

 var ajax = jQuery.ajax({
  type: "POST",
  url: 'http://copypaste.test',
  data: formData,
  dataType: 'text',
  processData: false, 
  contentType: false,
    success: function(){ 
      console.log('success'); 
    },
    error: function() {
     console.log('error'); 
    } 
  });
 }

ajax 发布成功,因为我在响应中得到test string,在我的控制台中得到这个

 readyState 4
 responseText "\ntest string"
 status  200
 statusText "OK"

然后当我转到http://copypaste.test 时,我在进入目录时看不到文本或文件的创建?

谁能指点我正确的方向

谢谢

【问题讨论】:

  • 文件真的创建了吗?
  • 无法打开和写入文件不会导致致命错误,而只是警告。您应该启用错误显示并将错误处理添加到您的文件写入调用中。
  • 没有创建文件,你能给我看一个错误处理的例子吗..我认为你的意思是在 php 方面?
  • 您无法在浏览器中打开相同的 url 并期望看到通过 ajax 发送的数据。
  • Ajax 调用在单独的选项卡中完成,现在创建文件就足够了

标签: javascript php jquery ajax


【解决方案1】:

我注意到您在写入后从不调用 fclose("report.txt") 来关闭文件。这可能会导致问题。

您可以使用此函数调用来处理文件的打开、写入和关闭。

  file_put_contents("report.txt",$report);

您可以尝试替换上述函数调用中的“report.txt”,以防文件仍在内存中打开并且您无法访问它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2016-03-29
    • 1970-01-01
    相关资源
    最近更新 更多