您可以使用HTML将文本输入上传为文件吗?

时间:2014-07-02 21:35:54

标签: javascript php html

我正在尝试从HTML文本表单中获取用户的输入

<input type="text" name="comments" value="Comment">

当用户点击表单的提交按钮时,有没有办法将输入文本作为txt文件提交,就好像我有一个

type='file' 

表格类型?

(我可以在这个项目中使用原生的html,js或php)

3 个答案:

答案 0 :(得分:2)

首先,创建一个名为temp的目录,然后将.htaccess文件放入其中,其中包含:deny from all。 然后用代码创建一个php脚本:

<?php
if (!empty($_POST)) {
    file_put_contents('temp/file.txt', $_POST['comments']);
}

不要忘记临时文件夹的写权限!

BUT!永远不要保存.php扩展名的文件,因为一些真黑客可以在textarea中编写php代码,然后保存并执行它(如果你不用.htaccess创建deny from all)。此外,您可以使用chmod拒绝执行temp/目录中的所有文件(仅适用于linux,对于Windows .htaccess将帮助您)。您也可以将temp/目录放在服务器的www/(webroot)目录下(www/目录的路径是这样的:/site.com/www/,只需创建一个dir with path:/site.com/temp/),然后没有人可以执行创建的文件。将文件写入此文件夹将如下所示:

file_put_contents('../temp/file.txt', $_POST['comments']);

答案 1 :(得分:1)

如果您想将用户的输入作为文本文件而不是提交的文本,那么您可以使用以下javascript方法:

// JavaScript
function download(filename, text) {
    var dom = document.createElement('a');
    dom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    dom.setAttribute('download', filename);
    dom.click();
}

从按钮捕获click事件,然后使用注释中的文件名和文本调用download()函数。

答案 2 :(得分:0)

type =“file”是发布一个表格的文件。如果要插入用户提供的文本,则必须自行处理。有几种方法可以在文件中插入内容,你可以查看fwrite或file_put_contents。