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

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

如果只能使用PHP来实现,那我怎样才能将文本传递给PHP而不用编码呢?

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

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

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

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); } 

编辑:

正如Florian在下面提到的那样,XHR回退不是必需的,因为FormData在旧的浏览器( formdata browser兼容性 )中不被支持,所以你可以声明XHRvariables为:

 var xhr = new XMLHttpRequest(); 

另外请注意,这只适用于支持FormData (如IE + 10)的浏览器。

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

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

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

如果你仍然想在你的主机上保存原始脚本文件,这里有一些你应该知道的东西。 如果你正在处理这样的文件,你必须非常小心安全!

file upload(如果JavaScript可以select文件的名称,也可以发送纯文本) 。http : //www.developershome.com/wap/wapUpload/wap_upload.asp ?page=security https://www.owasp .ORG / index.php的/ Unrestricted_File_Upload