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

24 javascript ajax jquery text

是否可以使用JavaScript/jQuery将文本保存到新的文本文件而不使用PHP?我试图保存的文本可能包含HTML实体,JS,HTML,CSS和PHP脚本,我不想逃避或使用urlencode!

如果它只能用PHP实现,我如何在不编码的情况下将文本传递给PHP?

raz*_*zak 41

您必须有一个服务器端脚本来处理您的请求,它不能使用javascript完成.

要发送没有URIencoding或转义特殊字符的原始数据到php并将其保存为新txt文件,您可以使用post方法发送ajax请求,FormData如:

JS:

var data = new FormData();
data.append("data" , "the_text_you_want_to_save");
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
xhr.open( 'post', '/path/to/php', true );
xhr.send(data);
Run Code Online (Sandbox Code Playgroud)

PHP:

if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = mktime() . ".txt";//generates random name

$file = fopen("upload/" .$fname, 'w');//creates new file
fwrite($file, $data);
fclose($file);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

正如Florian在下面提到的,XHR回退不是必需的,因为FormData旧浏览器不支持(formdata浏览器兼容性),因此您可以将XHR变量声明为:

var xhr = new XMLHttpRequest();
Run Code Online (Sandbox Code Playgroud)

另请注意,这仅适用于支持FormDataIE +10等浏览器.

  • 你为什么要为IE6使用XHR,而是使用`FormData`?一个或另一个必须去. (4认同)

Joe*_*e F 5

不能仅使用客户端脚本(例如JavaScript和jQuery)将内容保存到网站,但是通过在AJAX POST请求中提交数据,您可以在服务器端非常轻松地执行另一半。

但是,我不建议让脚本之类的原始内容易于写入主机,因为这很容易被利用。如果您想了解有关AJAX POST请求的更多信息,可以阅读jQuery API页面:

http://api.jquery.com/jQuery.post/

如果您仍然希望将原始脚本文件保存在主机上,则应注意以下几点。如果要处理此类文件,则必须非常小心安全!

文件上传(如果JavaScript也可以选择文件名,那么如果发送纯文本,则大多数情况也适用) http://www.developershome.com/wap/wapUpload/wap_upload.asp?page=security https://www.owasp .org / index.php / Unrestricted_File_Upload