Как сохранить текст в текстовой области на компьютере пользователя, когда они нажимают кнопку в HTML? - PullRequest
0 голосов
/ 08 марта 2012

Я снова работаю над своим блогом, но я хочу создать онлайн-текстовый редактор, где вы нажимаете кнопку, и она сохраняет ее на своем компьютере, а если вы нажимаете кнопку загрузки, она загружает файл со своего компьютера.Кто-нибудь знает, как это сделать?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 08 марта 2012

В настоящее время нет способа записи в файловую систему клиента. Это из соображений безопасности.

Однако в JavaScript вы можете хранить некоторые данные (до 5 МБ) в объекте localStorage и впоследствии получать их оттуда. localStorage @ MDN

localStorage может хранить только строки в своем хранилище значений ключей, поэтому вам может потребоваться сериализовать ваши объекты перед их сохранением.

Хранение

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

Получение

var yourData = JSON.parse(  window.localStorage.getItem( 'yourId' ) );
1 голос
/ 08 марта 2012

Я не уверен, почему так сильно невозможно актуально с хранилищем на стороне клиента: все, что вам нужно сделать, это экспортировать файл в любой формат, который вы хотите (даже в виде простого текста) и иметьпользователь загружает его - сродни Сохранить как .Чтобы загрузить файл, попросите пользователя загрузить его снова - например, Открыть .

. Это можно сделать, разместив содержимое текстовой области, например, в сценарии php.

Это не более, чем использование диалогов Save As... и Open в любом другом локальном приложении для обработки текстов.

Единственная причина, по которой пользователь может сделать это, - этоих редактировать файл локально, пока они были отключены от вашей платформы блогов.Поэтому более элегантной альтернативой, если вы не хотите, чтобы пользователь действительно редактировал файл локально, является сохранение черновых версий на сервере (как это делает StackExchange).

0 голосов
/ 08 марта 2012

Загрузка может быть реализована следующим образом в форме (например, отправка в PHP-скрипт):

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

Это позволяет, например, загружать текстовые и csv-файлы.

Я думаю, что сохранение невозможно, как это.

@ комментарий
Это действительно зависит от того, что вы хотите сделать с файлом. Вот простая функция загрузки:

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