使用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