当单击html中的按钮时,如何将textarea中的文本保存到用户计算机?

时间:2012-03-08 16:07:08

标签: html textarea save

我再次在我的博客上工作,但我想制作一个在线文本编辑器,您可以在其中单击按钮并将其保存到计算机中,如果单击加载按钮,则会从其计算机加载文件。有谁知道怎么做?

提前致谢!

3 个答案:

答案 0 :(得分:1)

目前无法写入客户端的文件系统。这是出于安全原因。

但是,使用JavaScript,您可以在localStorage对象中存储一些数据(最多5MB),然后从那里检索它。 localStorage @MDN

localStorage只能在其键值存储中存储字符串,因此您可能必须在存储对象之前对其进行序列化。

贮藏

window.localStorage.setItem( 'yourId', JSON.stringfy( yourData ) );

检索

var yourData = JSON.parse(  window.localStorage.getItem( 'yourId' ) );

答案 1 :(得分:1)

我不确定为什么在客户端存储中存在如此强大的它是不可能的当前:您所要做的就是将文件导出为您想要的任何格式(甚至是纯文本)和让用户下载它 - 类似于另存为。要加载文件,请让用户再次上传 - 类似于打开

这可以通过将textarea的内容发布到php脚本来完成,例如。

这不是在任何其他本地文字处理应用程序中使用Save As...Open对话框的步骤。

但是,您可能希望用户执行此操作的唯一原因是允许他们在与博客平台断开连接时在本地编辑文件。因此,除非您希望用户在本地实际编辑文件,否则更优雅的替代方法是在服务器上保存草稿版本(如StackExchange那样)。

答案 2 :(得分:0)

可以在表单中实现加载(例如发送到PHP脚本):

<input name="usedFile" type="file" class="file" size="50"
       accept="text/csv,text/plain" />

这允许加载text和csv文件。

我认为不可能像这样保存。

<强> @comment
这实际上取决于你想要对文件做什么。这是一个简单的加载函数:

if (!empty($_FILES['usedFile']['tmp_name'])) {
    load_uploaded_file($_FILES['usedFile']['tmp_name'], $my_loaded_data);
}

// ...

function load_uploaded_file($filename, &$data) {

    if (!file_exists($filename)) {
        return False;
    }

    $data = array();
    $rowCount = 0;
    $handle = fopen($filename, 'r');

    while (($line = fgets($handle, 4096)) !== False) {
        $data[$rowCount] = $line;
        $rowCount++;
    }

    fclose($handle);  
    return True;
}