Итак, у меня есть приложение «экспорт», которое выводит пользователя на конечную страницу с текстовым полем с большим количеством текста. Теперь рабочий процесс состоит в том, чтобы скопировать и вставить этот текст из текстовой области в файл.

Экспортированный код становится больше, и мы хотим побудить пользователей делать это чаще, поэтому путь копирования / вставки больше не желателен. (Не говоря уже о том, что моя цепочка xterm-> ssh-> screen-> vi не так хорошо вставляет 250K символов)

Итак, проблема заключается в следующем: у меня есть текстовое поле, в которое был экспортирован код, и я хочу предоставить кнопку «Загрузить этот код в файл»

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

  • Создайте сценарий, который получает указанный текст как POST и отправляет его обратно с правильными заголовками содержимого. Это нежелательно, потому что мы будем POSTing 250k, что будет медленнее, чем:

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

  • Каким-то образом использовать Javascript и, возможно, можно пропустить сервер все вместе и просто отправить $ ('. Exported'). Val () в браузер с правильными заголовками? Не знаю, как это сделать.

Так что, если у кого-то есть предложения, которые были бы замечательными, возможно, я что-то упускаю. Спасибо!

Изменить: Загрузить содержимое текстового поля в виде файла с использованием только Javascript (без серверной части)

В этом вопросе говорится, что JS-маршрут невозможен (вероятно)

php
0
jon skulski 28 Май 2009 в 21:55

4 ответа

Лучший ответ

Я бы выбрал вариант 2. Самый простой и быстрый. Остальные немного надуманы.

Если вы выберете вариант 2, зачем вообще оставлять текстовое поле?

1
Martijn Heemels 28 Май 2009 в 18:16

Параметры:

  • ТЕКСТ УЖЕ НА СЕРВЕРЕ:

    • СОЗДАЙТЕ GETFILE.PHP, который будет отвечать на этот текст в файле.
  • ТЕКСТ В КЛИЕНТЕ

    • РАЗМЕСТИТЕ ТЕКСТ В GETFILE.PHP и ответьте на файл.
    • РАЗМЕСТИТЬ ТЕКСТ В GETFILE.PHP, сохраните файл и предоставьте ССЫЛКУ для ЗАГРУЗКИ (тогда вы можете удалить файл или нет, в зависимости от ваших потребностей).

Вот пример этого http://www.osix.net/modules/article/?id=773 < / а>

0
acromm 28 Май 2009 в 18:06

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

Вот пример того, как это могло бы выглядеть:

if (isset($_GET['download'])) {
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment;filename="dump.data"');
    echo $data;
    exit;
} else {
    echo '<textarea>', htmlspecialchars($data), '</textarea>';
}
0
Gumbo 28 Май 2009 в 18:05

Я бы предложил следующее: сделайте так, чтобы ваша кнопка заменяла весь DOM страницы вашим текстом. После этого пользователь сможет просто нажать Ctrl + S или ⌘S. Не совсем то, что вы хотите, но все же ярлык.

Думаю, вы можете сделать это с помощью следующего (jQuery):

$ (document.body).html ($ ('#textarea-id').html)

(Не проверено)

1
Alexander Yancharuk 14 Янв 2014 в 08:47